如何使用打字稿的es6-promises?
我读了这个问题,但没有得到承诺与打字稿的工作。 希望我们能做出明确的指导。 这是一个服务器/节点项目。 我实际上使用最新的iojs,但是将ES5作为输出。
$ tsd query es6-promise --action install --save $ npm install --save es6-promise // typescript code: /// <reference path="../../typings/es6-promise/es6-promise.d.ts"/> var Promise = require("es6-promise").Promise; require('es6-promise').polyfill(); function test():Promise { var p:Promise = new Promise(); return p; }
这是给错误:
Cannot find name 'Promise'.
//或者:
var p = new Promise<string>((resolve, reject) => { resolve('a string'); }); //error=> Untyped function calls may not accept type arguments.
从您自己的节点服务器端代码返回Promise的build议方法是什么?
引用:
-
https://www.npmjs.com/package/es6-promise
-
https://github.com/borisyankov/DefinitelyTyped/blob/master/es6-promise/es6-promise-commonjs-tests.ts
main.ts
import {Promise} from 'es6-promise'; const p: Promise<string> = new Promise ( (resolve: (str: string)=>void, reject: (str: string)=>void) => { const a: string = "hello from Promise"; resolve(a); } ); p.then((st) => { console.log(st); });
tsconfig.json
{ "compilerOptions": { "target": "es3", "module": "commonjs", "declaration": false, "noImplicitAny": false, "noLib": false }, "filesGlob": [ "./**/*.ts", "!./node_modules/**/*.ts" ], "files": [ "./main.ts", "./typings/es6-promise/es6-promise.d.ts" ] }
compileandrun.sh
#!/bin/sh npm install es6-promise tsd install es6-promise tsc node main.js
以下是在v2.1.1 +目标设置为es5
我可以通过安装es6-promise
来使用Promises with async/await
,然后将其添加到文件顶部:
global.Promise = require('es6-promise').Promise;
而这个tsconfig.json
"lib": [ "es2015.promise", "es5" ],
使用import { Promise }
表单不适合我,因为其他库崩溃(例如:axios)
我需要将其填入不同的框架(具体来说,axios); 我不需要真正创造我自己的承诺,所以这些解决scheme都不适合我。 幸运的是,如果隐藏起来的话,答案很简单:
import { polyfill } from 'es6-promise' polyfill();
将以下内容添加到package.json
:
"devDependencies": { "@types/es6-promise": "^0.0.32" }, "dependencies": { "es6-promise": "~4.1.0" }
在tsconfig.json中将目标更改为“es6”
"compilerOptions": {"target": "es6" }
或者为Visual Studio 2015安装TypeScript也可以在不修改tsconfig.json的情况下解决这个问题
https://www.microsoft.com/en-us/download/details.aspx?id=48593