如何使用打字稿的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