【问题标题】:In TypeScript, how to use Promises with the RSVP implementation on Node.js在 TypeScript 中,如何在 Node.js 上使用带有 RSVP 实现的 Promises
【发布时间】:2014-08-19 13:43:38
【问题描述】:

在 Node.js 上,将 Promise 与 TypeScript 一起使用的正确方法是什么?

目前我使用的是定义文件“rsvp.d.ts”:

interface Thenable {
    then(cb1: Function, cb2?: Function): Thenable;
}
declare module rsvp {
    class Promise implements Thenable {
        static cast(p: Promise): Promise;
        static cast(object?): Promise;
        static resolve(t: Thenable): Promise;
        static resolve(obj?): Promise;
        static reject(error?: any): Promise;
        static all(p: Promise[]): Promise;
        static race(p: Promise[]): Promise;
        constructor(cb: Function);
        then(cb1: Function, cb2?: Function): Thenable;
        catch(onReject?: (error: any) => Thenable): Promise;
        catch(onReject?: Function): Promise;
    }
}

…在我的“.ts”文件中:

/// <reference path='../node.d.ts' />
/// <reference path='rsvp.d.ts' />
global['rsvp'] = require('es6-promise');
var Promise = rsvp.Promise;
var p: Thenable = new Promise(function (resolve) {
    console.log('test');
    resolve();
});

它有效,但对“全局”的引用很难看。

注意。我没有使用definition file from DefinitelyTyped

【问题讨论】:

    标签: node.js typescript promise definitelytyped rsvp-promise


    【解决方案1】:

    正确修复

    刚刚更新了定义以支持正确方式:https://github.com/borisyankov/DefinitelyTyped/pull/2430

    所以现在你可以使用相同的 defs (https://github.com/borisyankov/DefinitelyTyped/tree/master/es6-promises):

    import rsvp = require('es6-promises');
    var Promise = rsvp.Promise;
    

    只是对未来的建议

    它有效,但对“全局”的引用很难看。

    你可以这样做:

    var rsvp = require('es6-promise');
    var Promise = rsvp.Promise;
    

    【讨论】:

    • 谢谢。关于这个建议,tsc 没问题,但 WebStorm (错误地)报告了一个错误。
    猜你喜欢
    • 2015-02-18
    • 2021-05-17
    • 2020-03-11
    • 2019-02-03
    • 2014-09-24
    • 1970-01-01
    • 2012-02-11
    • 2016-04-10
    相关资源
    最近更新 更多