Typescript: 2 рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 25 рдЕрдХреНрддреВре░ 2018  ┬╖  1рдЯрд┐рдкреНрдкрдгреА  ┬╖  рд╕реНрд░реЛрдд: microsoft/TypeScript

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░:
рдореИрдВ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛рдд рд╡рд┐рд╡рд░рдг рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдирд╛

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░:
рдЬрдм рдореИрдВ tsc app.ts рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
../node_modules/@types/bluebird/index.d.ts:750:72 - рддреНрд░реБрдЯрд┐ TS2583: 'рдорд╛рдирдЪрд┐рддреНрд░' рдирд╛рдо рдирд╣реАрдВ рдЦреЛрдЬрд╛ рдЬрд╛ рд╕рдХрд╛ред рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЕрдкрдиреА рд▓рдХреНрд╖рд┐рдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрджрд▓рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ? lib рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд┐рдХрд▓реНрдк рдХреЛ es2015 рдпрд╛ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

750 рд╕реНрдерд┐рд░ рд╕рд╣рд╛рд░рд╛(рдорд╛рдирдЪрд┐рддреНрд░: рд╕рдорд╛рдзрд╛рди рдпреЛрдЧреНрдп>>): рдмреНрд▓реВрдмрд░реНрдб>;
рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди рд▓рд┐рдВрдХ:

рдореБрдЭреЗ рдЕрдкрдиреЗ рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдПрдХ рдФрд░ рддреНрд░реБрдЯрд┐ рднреА рдорд┐рд▓рддреА рд╣реИ:
рдлрд╝рд╛рдЗрд▓ '/Users/harry.gothold/Documents/api-call-weather/src/app.ts' рдПрдХ рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рд╡рд╣ рдкрд░реАрдХреНрд╖рдг рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
`
рдЖрдпрд╛рдд * '../src/app' рд╕реЗ рдРрдк рдХреЗ рд░реВрдк рдореЗрдВ;
// рдЖрдпрд╛рдд * 'рдЪрд╛рдп' рд╕реЗ рдЪрд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ;
// рдЖрдпрд╛рдд {рдкрд░рд┐рдгрд╛рдо} '../ рдРрдк' рд╕реЗ;
рд╡рд░ рдЪрд╛рдп = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рдЪрд╛рдп');
var sinon = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рд╕рд┐рдиреЙрди');
рдХреЙрдиреНрд╕реНрдЯ рдЙрдореНрдореАрдж = рдЪрд╛рдпред тАЛтАЛрдЙрдореНрдореАрдж;

рд╡рд░реНрдгрди рдХрд░реЗрдВ ('рдкрд░рд┐рдгрд╛рдо', рдлрд╝рдВрдХреНрд╢рди() {
рдпрд╣ ('рдореМрд╕рдо рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП', (рдХрд┐рдпрд╛ рдЧрдпрд╛) => {
рдЙрдореНрдореАрдж (рдкрд░рд┐рдгрд╛рдо)ред to.eventually.equal ('рд╕реНрдкрд╖реНрдЯ рдЖрдХрд╛рд╢');
рдХрд┐рдпрд╛ рд╣реБрдЖ();
});
});`

рдпрд╣ рдореВрд▓ рдЯреАрдПрд╕ рдХреЛрдб рд╣реИ:
`рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рджреЗрдВ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ('рдЕрдиреБрд░реЛрдз');
рдЪрд▓реЛ рд╡рд╛рджрд╛ = рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ('рдмреНрд▓реВрдмрд░реНрдб');

рдлрд╝рдВрдХреНрд╢рди рдЧреЗрдЯрдбреЗрдЯрд╛ () {
рдирдпрд╛ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ ((рд╕рдВрдХрд▓реНрдк: рдХреЛрдИ, рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ: рдХреЛрдИ рднреА) => {
request('https://api.openweathermap.org/data/2.5/forecast?id=2643743&APID=99eaec08987344591490f9a6ee213155', {json: true},
(рдЧрд▓рддреА: рдХреЛрдИ, рд░реЗрд╕: рдХреЛрдИ, рд╢рд░реАрд░: рдХреЛрдИ рднреА) => {
рд╕рдВрдХрд▓реНрдк (рд╢рд░реАрд░ред рд╕реВрдЪреА [0]ред рдореМрд╕рдо [0]ред рд╡рд┐рд╡рд░рдг);
рдЕрд╕реНрд╡реАрдХрд╛рд░ (рддреНрд░реБрдЯрд┐, 'рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╣реБрдИ');
});
});
};

рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рдгрд╛рдо (рдореМрд╕рдо рд╡рд┐рд╡рд░рдг: рдХреЛрдИ рднреА) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ( The weather today is ${weatherDescription} );
}

рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ()
рддрдм ((рдореМрд╕рдо рд╡рд┐рд╡рд░рдг: рдХреЛрдИ рднреА) => {
рдкрд░рд┐рдгрд╛рдо (рдореМрд╕рдо рд╡рд┐рд╡рд░рдг)
})
рдХреИрдЪ ((рдЧрд▓рддреА: рдХреЛрдИ рднреА) => {
рдлреЗрдВрдХрдирд╛ (рдЧрд▓рддреА)
});

рдореЙрдбреНрдпреВрд▓.рдПрдХреНрд╕рдкреЛрд░реНрдЯ = {
рдЧреЗрдЯрдбрд╛рдЯрд╛: рдлрд╝рдВрдХреНрд╢рди () {},
рдкрд░рд┐рдгрд╛рдо: рдлрд╝рдВрдХреНрд╢рди () {}
}`

рдФрд░ рдпрд╣ рдореЗрд░реА tsconfig рдлрд╝рд╛рдЗрд▓ рд╣реИ:
`{
"рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд┐рдХрд▓реНрдк": {
/* рдореВрд▓ рд╡рд┐рдХрд▓реНрдк /"рд▓рдХреНрд╖реНрдп": "es6", / ECMAScript рд▓рдХреНрд╖реНрдп рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ: 'ES3' (рдбрд┐рдлрд╝реЙрд▓реНрдЯ), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018' рдпрд╛ 'ESNEXT'ред /"рдореЙрдбреНрдпреВрд▓": "рдХреЙрдордирдЬ", / рдореЙрдбреНрдпреВрд▓ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', рдпрд╛ 'ESNext'ред /"lib": ["es5", "es6", "dom"], / рд╕рдВрдХрд▓рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред /// "allowJs": рд╕рдЪ, / рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВред /// "checkJs": рд╕рдЪ, / .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВред /// "jsx": "рд╕рдВрд░рдХреНрд╖рд┐рдд", / JSX рдХреЛрдб рдкреАрдврд╝реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ: 'рд╕рдВрд░рдХреНрд╖рд┐рдд', 'рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓', рдпрд╛ 'рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛'ред /// "рдШреЛрд╖рдгрд╛": рд╕рддреНрдп, / рд╕рдВрдмрдВрдзрд┐рдд '.d.ts' рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред /// "declarationMap": true, / рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдмрдВрдзрд┐рдд '.d.ts' рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд░реЛрддрдореИрдк рдмрдирд╛рддрд╛ рд╣реИред /// "sourceMap": рд╕рддреНрдп, / рд╕рдВрдмрдВрдзрд┐рдд '.map' рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред /// "рдЖрдЙрдЯрдлрд╛рдЗрд▓": "./", / рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ /// "рдЖрдЙрдЯрдбрд┐рд░": "./", / рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░реЗрдВред /// "рд░реВрдЯрдбрд┐рд░": "./", / рдЗрдирдкреБрдЯ рдлрд╛рдЗрд▓реЛрдВ рдХреА рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред --outDir рдХреЗ рд╕рд╛рде рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред /// "рд╕рдордЧреНрд░": рд╕рддреНрдп, / рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрдХрд▓рди рд╕рдХреНрд╖рдо рдХрд░реЗрдВ /// "рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣рдЯрд╛рдПрдВ": рд╕рдЪ рд╣реИ, / рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рди рдХрд░реЗрдВред /// "noEmit": рд╕рдЪ, / рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рди рдХрд░реЗрдВред /// "importHelpers": рд╕рдЪ, / 'tslib' рд╕реЗ рдЗрдорд┐рдЯ рд╣реЗрд▓реНрдкрд░реНрд╕ рдХреЛ рдЗрдореНрдкреЛрд░реНрдЯ рдХрд░реЗрдВред /// "downlevelIteration": рд╕рдЪ рд╣реИ, / 'ES5' рдпрд╛ 'ES3' рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп 'рдлреЙрд░-рдСрдл', рд╕реНрдкреНрд░реЗрдб, рдФрд░ рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд┐рдВрдЧ рдореЗрдВ рдЪрд▓рдиреЗ рдпреЛрдЧреНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░реЗрдВред /// "рдкреГрдердХ рдореЙрдбреНрдпреВрд▓

/* Strict Type-Checking Options */
"strict": true,                           /* Enable all strict type-checking options. */
// "noImplicitAny": true,                 /* Raise error on expressions and declarations with an implied 'any' type. */
// "strictNullChecks": true,              /* Enable strict null checks. */
// "strictFunctionTypes": true,           /* Enable strict checking of function types. */
// "strictPropertyInitialization": true,  /* Enable strict checking of property initialization in classes. */
// "noImplicitThis": true,                /* Raise error on 'this' expressions with an implied 'any' type. */
// "alwaysStrict": true,                  /* Parse in strict mode and emit "use strict" for each source file. */

/* Additional Checks */
// "noUnusedLocals": true,                /* Report errors on unused locals. */
// "noUnusedParameters": true,            /* Report errors on unused parameters. */
// "noImplicitReturns": true,             /* Report error when not all code paths in function return a value. */
// "noFallthroughCasesInSwitch": true,    /* Report errors for fallthrough cases in switch statement. */

/* Module Resolution Options */
// "moduleResolution": "node",            /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
// "baseUrl": "./",                       /* Base directory to resolve non-absolute module names. */
// "paths": {},                           /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
// "rootDirs": [],                        /* List of root folders whose combined content represents the structure of the project at runtime. */
// "typeRoots": [],                       /* List of folders to include type definitions from. */
// "types": [],                           /* Type declaration files to be included in compilation. */
// "allowSyntheticDefaultImports": true,  /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
"esModuleInterop": true                   /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
// "preserveSymlinks": true,              /* Do not resolve the real path of symlinks. */

/* Source Map Options */
// "sourceRoot": "",                      /* Specify the location where debugger should locate TypeScript files instead of source locations. */
// "mapRoot": "",                         /* Specify the location where debugger should locate map files instead of generated locations. */
// "inlineSourceMap": true,               /* Emit a single file with source maps instead of having a separate file. */
// "inlineSources": true,                 /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */

/* Experimental Options */
// "experimentalDecorators": true,        /* Enables experimental support for ES7 decorators. */
// "emitDecoratorMetadata": true,         /* Enables experimental support for emitting type metadata for decorators. */

}
}`

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

рдХреГрдкрдпрд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдкрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВред

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

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

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

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

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

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

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