Ali*_*cia 4 amd typescript bluebird
我就是不明白。一旦这相对容易,我就从DefinitelyTyped下载了该代码段,假设它是全局声明的,我添加了脚本并开始工作。现在看来,我别无选择,只能使用复杂的程序包管理器和异步加载系统,并可能带有用于生产的优化程序。
理想情况下,我只想要一些这样的TypeScript代码
// maybe some import?
Promise.resolve("foo").then(function(msg) {
console.log(msg);
}
Run Code Online (Sandbox Code Playgroud)
像这样编译成一些JavaScript:
Promise.resolve("foo").then(function(msg) {
console.log(msg);
}
Run Code Online (Sandbox Code Playgroud)
我希望它能够在浏览器中或像Rhino这样的最小环境中运行。如果需要,我可以包括require.js,almond.js,使用browserify或其他工具构建,但是我希望它不需要XHR就可以工作。
到目前为止,我已经尝试过:
outFile以获取我的代码束,然后依次包含文件:almond.js,bluebird.js,my-code.js以及一些需要主模块才能正常运行的代码:(Error: See almond README: incorrect module build, no module name显然在bluebird.js我从官方下载页面中AMD并没有定义一个名字,我应该建立它自己还是什么......?)missing bluebird。requirejs.config({shim: { bluebird: { exports: "Promise" }}}):: exception from uncaught JavaScript throw: Error: Mismatched anonymous define() module和错误消息中的Bluebird的完整代码。Subsequent variable declarations must have the same type.我觉得我在这样一个看似简单的请求上浪费了太多时间,所以我将尝试询问StackOverflow :)
小智 5
如果像我一样,你认为使用Promise.resolve()投/裹胁青鸟承诺,好像它都失败的既定目的蓝鸟(“零开销抽象”,“到处奔走”,“规格兼容”,...),并带来了打字稿,以一个繁琐的转折点,请考虑@types/bluebird-global如下使用:
npm install --save-dev @types/bluebird-global
Run Code Online (Sandbox Code Playgroud)
在您的主要入口点中将其导入一次。
// The same Promise API, everywhere.
import * as Promise from 'bluebird'
global.Promise = Promise
Run Code Online (Sandbox Code Playgroud)
有关更多上下文,请参见DefinitelyTyped问题#11027。
现在,最好的做法是使用类型化,导入模块声明文件,而不是使用 DT 中的全局声明文件。
例如。对于蓝鸟,你可以typings install bluebird。这段代码对我来说编译得很好:
import Promise = require('bluebird')
Promise.resolve("foo").then(function (msg) {
console.log(msg)
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4377 次 |
| 最近记录: |