首页 文章

如何使用打字稿的es6-promises?

提问于
浏览
45

我读了this SO question但很难得到承诺使用打字稿 . 希望我们能够做出明确的指导 . 这适用于服务器/节点项目 . 我实际上正在使用最新的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的推荐方法是什么?

引用:

5 回答

  • 5

    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
    
  • 13

    以下是在v2.1.1上,目标设置为 es5

    通过安装 es6-promise 然后将其添加到文件顶部,我能够使用 async/await 的Promises:

    global.Promise = require('es6-promise').Promise;
    

    这到 tsconfig.json

    "lib": [ "es2015.promise", "es5" ],
    

    使用 import { Promise } 表格对我来说不起作用,因为其他库崩溃了(例如:axios)

  • -2

    我需要将其填充为不同的框架(特别是axios);我不需要真正创建自己的承诺,所以这些解决方案都不适合我 . 幸运的是,答案很简单,如果隐藏得很好:

    import { polyfill } from 'es6-promise'
    
    polyfill();
    
  • 1

    将以下内容添加到 package.json

    "devDependencies": {
    "@types/es6-promise": "^0.0.32"
    },
    "dependencies": {
    "es6-promise": "~4.1.0"
    }
    
  • 49

    在tsconfig.json中将目标更改为“es6”

    "compilerOptions": {"target": "es6" }
    

    或者为Visual Studio 2015安装TypeScript也可以在不修改tsconfig.json的情况下解决此问题

    https://www.microsoft.com/en-us/download/details.aspx?id=48593

相关问题