dcs*_*san 47 typescript es6-promise
我读了这个问题,但很难得到承诺与打字稿一起工作.希望我们能够做出明确的指导.这适用于服务器/节点项目.我实际上正在使用最新的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;
}
Run Code Online (Sandbox Code Playgroud)
这是错误的:
Cannot find name 'Promise'.
Run Code Online (Sandbox Code Playgroud)
//或者:
var p = new Promise<string>((resolve, reject) => {
resolve('a string');
});
//error=> Untyped function calls may not accept type arguments.
Run Code Online (Sandbox Code Playgroud)
从您自己的节点服务器端代码返回Promise的推荐方法是什么?
引用:
Ily*_*mov 52
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);
});
Run Code Online (Sandbox Code Playgroud)
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"
]
}
Run Code Online (Sandbox Code Playgroud)
compileandrun.sh
#!/bin/sh
npm install es6-promise
tsd install es6-promise
tsc
node main.js
Run Code Online (Sandbox Code Playgroud)
Bru*_*oLM 14
以下是在v2.1.1 +上,目标设置为 es5
我可以async/await通过安装es6-promise然后将其添加到文件顶部来使用Promises :
global.Promise = require('es6-promise').Promise;
Run Code Online (Sandbox Code Playgroud)
这就是 tsconfig.json
"lib": [ "es2015.promise", "es5" ],
Run Code Online (Sandbox Code Playgroud)
使用该import { Promise }表格对我来说不起作用,因为其他库崩溃了(例如:axios)
我需要将其填充为不同的框架(特别是axios); 我不需要真正创建自己的承诺,所以这些解决方案都不适合我.幸运的是,答案很简单,如果隐藏得很好:
import { polyfill } from 'es6-promise'
polyfill();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50073 次 |
| 最近记录: |