Typescript: рдореЙрдбреНрдпреВрд▓ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рдордИ 2015  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: microsoft/TypeScript

рдореЗрд░реЗ рдкрд╛рд╕ рд░рд┐рдПрдХреНрдЯ рдЯрд╛рдЗрдк рдбреЗрдлрд┐рдирд┐рд╢рди рдлрд╛рдЗрд▓ рд╣реИ (рдЬреЛ рдХрд┐рд╕реА рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШреЛрд╖рд┐рдд рдХреА рдЧрдИ рд╣реИ)ред рдореЗрд░реЗ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ, рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдХрд░рддрд╛ рд╣реВрдВ:

import * as R from "react"

рдФрд░ рдлрд┐рд░ рдЦрд╝реБрд╢реА рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдлреИрд╢рди рдореЗрдВ R.createElement(... рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ:

let _r = R;
_r.createElement(...

рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рд╣рд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрд░ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдШреЛрд╖рдгрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ (рд╣рд╛рдВ, рдореИрдВ рдХреБрдЫ рдЪрд░ рдХреЗ рд╕рд╛рде рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдо рд╕реНрдерд╛рди рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ)ред рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдПрдХ .d.ts :

import * as React from "react";
declare var R : React;

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛" рдирд╛рдо рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рдЕрдВрдбрд░рд▓рд╛рдЗрдВрдЧ Rea.d.ts рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛, рдкреВрд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╣рд╛рдп @Ett рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рднреА рдЕрдм рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдореЗрд░рд╛ рд╕реНрд░реЛрдд рдХреЛрдб ES6 рдореЙрдбреНрдпреВрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рд░реАрдлрд╝реНрд▓реИрдХреНрдЯ рдХрд┐рдпрд╛ рддреЛ рдореБрдЭреЗ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред рдХреНрдпрд╛ рдХреБрдЫ рд╢реЛрдз рдХрд┐рдпрд╛ рдФрд░ рдЕрдм рдореЗрд░реЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрдм рдореИрдВ рджреВрд╕рд░реА рдлрд╛рдЗрд▓ globals.d.ts рдмрдирд╛рдКрдВ рдФрд░ рдЗрд╕реЗ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рднреА рд░рдЦреВрдВ:

import * as _R from 'ramda';
import * as _mobx from 'mobx';

declare global {
  const R: typeof _R;
  const mobx: typeof _mobx;
}

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдлрд╛рдЗрд▓ рдЕрдХреЗрд▓реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ "рд╕рдВрддреБрд╖реНрдЯ" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдЖрдкрдХреЛ рдЙрди рдЕрдиреНрдп рдлрд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдЬрд┐рдирдХрд╛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ (рдореИрдВ WebStorm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ) рдЬрдм рдХреЗрд╡рд▓ globals.d.ts рдлрд╝рд╛рдЗрд▓ рдереА рддреЛ рдореЗрд░реА рдЖрдИрдбреАрдИ рд▓рдЧрд╛рддрд╛рд░ рдореБрдЭреЗ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдВрдЧ рдХрд░ рд░рд╣реА рдереА рдФрд░ рд╕рд╛рде рд╣реА рдЙрди рдЧреНрд▓реЛрдмрд▓реНрд╕ рдкрд░ рдкреВрд░реНрдгрддрд╛ рдЕрдкреВрд░реНрдг рдереАред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЕрдм рджреЛрдиреЛрдВ рдлрд╛рдЗрд▓реЗрдВ рд░рдЦреАрдВ, рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдореЗрд░реА рдЖрдИрдбреАрдИ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддреА рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрди рдХреБрдЫ рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдо рддреМрд░ рдкрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реИред

рдпрд╣ рдореЗрд░реА tsconfig.json рд░рд┐рдлрдВрдб рдХреЗ рд▓рд┐рдП рд╣реИ:

{
  "compilerOptions": {
    "target": "ES5",
    "module": "amd",
    "moduleResolution": "node",
    "experimentalDecorators": true,
    "lib": [
      "ES6",
      "DOM",
      "ScriptHost"
    ],
    "sourceMap": true,
    "strictNullChecks": true
  },
  "include": [
    "types/**/*",
    "src/**/*"
  ]
}

рдореИрдВ рдмрдВрдбрд▓ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдпрд╛ рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рд╕рд┐рд░реНрдл рд╡реНрдпрдХреНрддрд┐рдЧрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ https://github.com/SAP/openui5 рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо (рдЬреЛ рдПрдПрдордбреА рдХреЗ рд╕рдорд╛рди рд╣реИ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдХреЗрд╡рд▓ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдмрдВрдбрд▓ рдХрд░рддрд╛ рд╣реВрдВред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ: 2.2.1

рдЙрдореНрдореАрдж рд╣реИ рдХреА рд╡реЛ рдорджрдж рдХрд░рджреЗред

рд╕рднреА 11 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрд┐рд╕ рдорд┐рдирдЯ рдореЗрдВ рдЖрдк рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ import рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕реЗ рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ рдЖрдк рд░рд┐рдПрдХреНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ?

https://github.com/borisyankov/DefinitelyTyped/blob/master/react/react-global.d.ts

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ред

рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ react-global.d.ts рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ React рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд╛рди рдкрд░ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдЗрд╕рдХрд╛ рдирд╛рдо рдХреИрд╕реЗ рдмрджрд▓реВрдВрдЧрд╛ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛?

declare var _r = React;  // error Cannot find name 'React';

рдореЗрд░рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ / рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдлрд╣рд░рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдореБрдЭреЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдкрде рдЖрдпрд╛рддреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдирд╛ рдкрдбрд╝реЗред рдореИрдВ рдЗрд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдХреИрд╕реЗ рдЬрд╛рдиреЗ рджрд┐рдпрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрд┐рдпрд╛ рд╣реИред

@ рд╣реЗрдЬрд▓рдмрд░реНрдЧ - рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдкрд░ рдореЗрд░реЗ рдХрд╕реНрддреВрд░реА рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЖрдпрд╛рдд рдЪреАрдЬреЗрдВ рд╣реИрдВ ... :)

рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ r.d.ts рдШреЛрд╖рдгрд╛ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

/// <reference path="react-global.d.ts"/>
declare var R: typeof React;

рдФрд░ рдлрд┐рд░ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рд░ рдЬрдЧрд╣ рджреЗрдЦреЗрдВред рдпрд╛ рдЗрд╕рд╕реЗ рднреА рдмреЗрд╣рддрд░:

/// <reference path="react-global.d.ts"/>
import R = React;

рдЬреЛ рдЖрдкрдХреЛ R.xxx рдХреЗ рд░реВрдк рдореЗрдВ React рд╕реЗ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрднреА рднреА typeof рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ - рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ред рдпрд╣ .d.ts рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рдЧреНрд▓реЛрдмрд▓ рд╕реНрдкреЗрд╕ рдореЗрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рдХреЛ рдлрд╣рд░рд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдЦрддреНрдо рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ...

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП typeof рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдиреБрд░реЛрдз (рдЬреИрд╕реЗ # 2357) рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдмрд╣реБрдд рдорд╛рдВрдЧ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдпрд╛ рддреЛ рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд┐рдирд╛ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдпрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рдеред рдПрдПрдордбреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдРрдк рдХреЗ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рднрд╛рдЧ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдирд┐рд╖реНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдирд╣реАрдВ рд╣реИ рдЬрд╣рд╛рдВ рдорд┐рд╢реНрд░рд┐рдд рдореЙрдбрд▓ рднреА рд╕рдВрднрд╡ рд╣реИред рддреЛ рд╣рд╛рдБ, рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рд╣реИред

рдЗрд╕ рдкрд░ рдореБрдЭреЗ рд╣рд╛рд╕реНрдп рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рд╕рдордп рдзрдиреНрдпрд╡рд╛рдж рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП! рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА рдмрд╛рд╣рд░реА рдореЙрдбреНрдпреВрд▓ (рдЖрдЧрд╛рдореА Angular2 рдФрд░ Aurelia рдЪреМрдЦрдЯреЗ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП) рдХреА рдЦреЛрдЬ рд╢реБрд░реВ рдХреА рд╣реИред # 17, # 2338 рдФрд░ # 2839 рдЬреИрд╕реЗ рдореБрджреНрджреЗ рдореБрдЭреЗ рдЕрдВрдд рдореЗрдВ рджрд┐рдЦ рд░рд╣реЗ рд╣реИрдВред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреА рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЧрд╣рд░рд╛ рдЧреЛрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реБрдП рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреВрдВрдЧрд╛ред

рдХреНрдпрд╛ рдРрд╕рд╛ рдХрд░рдирд╛ рдЕрднреА рднреА рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ? рдореИрдВ VueJS рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЕрдЧрд░ рдореИрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХрд░реВрдВрдЧрд╛ рддрд╛рдХрд┐ рд╕рднреА рдШрдЯрдХ рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред рдХреНрдпрд╛ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рдпрд╛ рд╣реИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

@Evertt

рдореБрдЭреЗ рдПрдХ рд░рд╛рд╕реНрддрд╛ рдорд┐рд▓рд╛, рдЬреЛ рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ 2.xx рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд░рд╛рдорд╛ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ R рд░реВрдк рдореЗрдВ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

  1. npm install ramda @types/ramda
  2. рдлрд╝рд╛рдЗрд▓ typings/ramda.d.ts рдмрдирд╛рдПрдБ
  3. .tsconfig.json рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рдмрдирд╛рдП рдЧрдП typings рдлрд╝реЛрд▓реНрдбрд░ рдЬреЛрдбрд╝реЗрдВ:
"include": [
    "typings/**/*",
     ...
]
  1. рдЬрд╛рджреВ рдХреЛ typings/ramda.d.ts :
import * as _R from 'ramda';

export as namespace R;
export = _R; 

рдЕрдм рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рднреА ts рдлрд╛рдЗрд▓реЗрдВ рдпрд╣ рдорд╛рдирддреА рд╣реИрдВ рдХрд┐ рдХреЛрдИ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рд╣реБрдЖ рд╡реИрд╢реНрд╡рд┐рдХ R рдореЗрд░реЗ рдмрд┐рдирд╛ рдХреЛрдИ рдФрд░ рдЖрдпрд╛рдд рдпрд╛ рдЙрди рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рд╣реИред

@geekflyer рдЬрдм рдореИрдВ рдЕрдкрдиреЗ types/vue.d.ts рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ:

import * as V from 'vue'

export as namespace Vue
export = V

рдЬрдм рднреА рдореИрдВ рдЙрд╕ рд╡реИрд╢реНрд╡рд┐рдХ Vue рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

error TS2686: 'Vue' refers to a UMD global, but the current file is a module. Consider adding an import instead.

рдХреНрдпрд╛ рдЖрдкрдХреЛ рд╡рд╣ рддреНрд░реБрдЯрд┐ рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рднреА рдорд┐рд▓реА? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдЖрдкрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд┐рдпрд╛?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ

рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╣ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╡рд╣ рддреНрд░реБрдЯрд┐ рдХреНрдпреЛрдВ рдорд┐рд▓реА рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдЕрдкрдирд╛ рд╕рдВрдкреВрд░реНрдг tsconfig.json рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╢рд╛рдпрдж рдЖрдкрдХрд╛ рд╡реЗрдмрдкреИрдХ рдХреЙрдиреНрдлрд┐рдЧрд░ рднреА?

рд╣рд╛рдп @Ett рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рднреА рдЕрдм рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдореЗрд░рд╛ рд╕реНрд░реЛрдд рдХреЛрдб ES6 рдореЙрдбреНрдпреВрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рд░реАрдлрд╝реНрд▓реИрдХреНрдЯ рдХрд┐рдпрд╛ рддреЛ рдореБрдЭреЗ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред рдХреНрдпрд╛ рдХреБрдЫ рд╢реЛрдз рдХрд┐рдпрд╛ рдФрд░ рдЕрдм рдореЗрд░реЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬрдм рдореИрдВ рджреВрд╕рд░реА рдлрд╛рдЗрд▓ globals.d.ts рдмрдирд╛рдКрдВ рдФрд░ рдЗрд╕реЗ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рднреА рд░рдЦреВрдВ:

import * as _R from 'ramda';
import * as _mobx from 'mobx';

declare global {
  const R: typeof _R;
  const mobx: typeof _mobx;
}

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдлрд╛рдЗрд▓ рдЕрдХреЗрд▓реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ "рд╕рдВрддреБрд╖реНрдЯ" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдЖрдкрдХреЛ рдЙрди рдЕрдиреНрдп рдлрд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдЬрд┐рдирдХрд╛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ (рдореИрдВ WebStorm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ) рдЬрдм рдХреЗрд╡рд▓ globals.d.ts рдлрд╝рд╛рдЗрд▓ рдереА рддреЛ рдореЗрд░реА рдЖрдИрдбреАрдИ рд▓рдЧрд╛рддрд╛рд░ рдореБрдЭреЗ рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдВрдЧ рдХрд░ рд░рд╣реА рдереА рдФрд░ рд╕рд╛рде рд╣реА рдЙрди рдЧреНрд▓реЛрдмрд▓реНрд╕ рдкрд░ рдкреВрд░реНрдгрддрд╛ рдЕрдкреВрд░реНрдг рдереАред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЕрдм рджреЛрдиреЛрдВ рдлрд╛рдЗрд▓реЗрдВ рд░рдЦреАрдВ, рдЬреЛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдореЗрд░реА рдЖрдИрдбреАрдИ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддреА рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрди рдХреБрдЫ рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдо рддреМрд░ рдкрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реИред

рдпрд╣ рдореЗрд░реА tsconfig.json рд░рд┐рдлрдВрдб рдХреЗ рд▓рд┐рдП рд╣реИ:

{
  "compilerOptions": {
    "target": "ES5",
    "module": "amd",
    "moduleResolution": "node",
    "experimentalDecorators": true,
    "lib": [
      "ES6",
      "DOM",
      "ScriptHost"
    ],
    "sourceMap": true,
    "strictNullChecks": true
  },
  "include": [
    "types/**/*",
    "src/**/*"
  ]
}

рдореИрдВ рдмрдВрдбрд▓ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдпрд╛ рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рд╕рд┐рд░реНрдл рд╡реНрдпрдХреНрддрд┐рдЧрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ https://github.com/SAP/openui5 рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо (рдЬреЛ рдПрдПрдордбреА рдХреЗ рд╕рдорд╛рди рд╣реИ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдХреЗрд╡рд▓ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдмрдВрдбрд▓ рдХрд░рддрд╛ рд╣реВрдВред

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ: 2.2.1

рдЙрдореНрдореАрдж рд╣реИ рдХреА рд╡реЛ рдорджрдж рдХрд░рджреЗред

@geekflyer рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрддрд╛ рд╣реИ рдЬреЛ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рдерд╛

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

CyrusNajmabadi picture CyrusNajmabadi  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kyasbal-1994 picture kyasbal-1994  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Zlatkovsky picture Zlatkovsky  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Roam-Cooper picture Roam-Cooper  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jbondc picture jbondc  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ