如何在当前的 TypeScript 中使用 Bluebird?

How to use Bluebird with current TypeScript?

我只是不明白。一旦这相对容易,我就从 DefinitelyTyped 下载了代码片段,假设它是全局声明的,我添加了脚本并且它起作用了。现在看来我没有其他选择可以使用复杂的包管理器和异步加载系统,可能还有生产优化器。

理想情况下,我只想要一些像这样的 TypeScript 代码

// maybe some import?
Promise.resolve("foo").then(function(msg) { 
    console.log(msg);
}

像这样编译成一些 JavaScript:

Promise.resolve("foo").then(function(msg) { 
    console.log(msg);
}

我希望它能够 运行 在浏览器或像 Rhino 这样的最小环境中。如果需要,我可以包含 require.js、almond.js、使用 browserify 或其他任何方式构建,但我希望它在不需要 XHR 的情况下工作。

到目前为止我已经尝试过:

我觉得我为这样一个看似简单的请求浪费了太多时间,所以我会尝试询问 Whosebug :)

不使用 DT 中的全局声明文件,现在认为最好的做法是使用 typings,导入模块声明文件。

例如。对于蓝鸟,你可以 typings install bluebird。这段代码对我来说编译得很好:

import Promise = require('bluebird')
Promise.resolve("foo").then(function (msg) {
  console.log(msg)
})

如果像我一样,您认为使用 Promise.resolve() 到 cast/coerce 蓝鸟承诺似乎都违背了 Bluebird 的既定目的(“零开销抽象”,“运行everywhere”, “Spec compatible”, ...) 并将 TypeScript 带到一个繁琐的临界点,考虑使用 @types/bluebird-global 如下:

npm install --save-dev @types/bluebird-global

在您的主入口点导入一次。

// The same Promise API, everywhere.
import * as Promise from 'bluebird'
global.Promise = Promise

有关详细信息,请参阅 DefinitelyTyped issue #11027