【问题标题】:TypeScript 1.5 ES6 modules & .d.ts files from DefinitelyTyped seem incompatible来自 DefinedlyTyped 的 TypeScript 1.5 ES6 模块和 .d.ts 文件似乎不兼容
【发布时间】:2015-07-22 15:56:46
【问题描述】:

我正在使用 WebStorm 进行 Web 开发,并且最近从内置的 TypeScript 1.4 编译器升级到了 1.5.3。然而,并非一切都如我所愿,因为编译器开始产生错误,提示我放弃 --module commonjs 参数并改为切换到 ES6 模块(我正在使用 --target es6)。完成此操作后,我开始收到错误消息,指出在以 ES6 为目标时无法使用导入分配,并且我应该改用新的模块语法(错误 1202)。所以我转换了我所有的文件,但显然这还不够,因为从 distinctlyTyped 存储库通过tsd 安装的.d.ts 文件使用旧语法,使编译器不断给出相同的错误。

我为.d.ts 文件编写了一个小型转换器,它工作得相当好,尽管偶尔会让我在这里和那里手动修复错误。我想知道是否有更好的解决方法?也许,我错过了什么?

附:将--target 更改为es5 不是一种选择,否则编译器会抱怨缺少我在项目中大量使用的promise 之类的东西。

【问题讨论】:

    标签: typescript webstorm ecmascript-6 typescript1.5


    【解决方案1】:

    将 --target 更改为 es5 不是一种选择,否则编译器会抱怨缺少我在项目中大量使用的 promises 之类的东西。

    使用--target es5 --noLib,然后手动引入es6.lib.d.ts

    【讨论】:

    • 谢谢,成功了。唯一出现的问题是 TS4091 错误(循环包含块范围的变量...),所以我不得不将这些变量的声明从 let/const 更改回 var。我之前使用--target es6 来避免这种事情,并且会在构建时对所有内容进行 babelify(因为 TypeScript 在 ES6 支持方面远远落后于 Babel,我不得不(不得不)同时使用这两者)。此外,WebStorm 似乎还不支持装饰器,加上语法突出显示的一些问题。否则,其他一切正常,谢谢!
    猜你喜欢
    • 2015-08-13
    • 1970-01-01
    • 2015-06-18
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 2015-12-24
    相关资源
    最近更新 更多