打字稿:使用lib.core.es6.d.ts

时间:2015-11-29 23:36:45

标签: compilation typescript ecmascript-6 building

我正在使用typescript,并尝试使用ES6地图,但却遇到了编译错误。

我已经发现我需要引用文件lib.core.es6.d.tsES6 Map in Typescript),我知道文件系统的位置。但是,我无法找到任何指定如何使用该文件的内容。

现在,我只在我正在编译的文件夹中有两个文件 tsc --module amd treenode.ts treemerge.ts

如何在其中一个文件中使用es6类型?如果答案是"按照网站X对#34;的方式对项目进行重组,我会发牢骚但我想这没关系。

2 个答案:

答案 0 :(得分:4)

  

但是,我无法找到任何指定如何使用该文件的内容。

您需要从github手动获取该文件并使用--noLib编译您的项目,自己传入lib文件。

答案 1 :(得分:4)

默认构建目标定位ES5,然后强制编译器使用默认lib.core.d.ts,因为它不能假定ES6类型可用。

如果将目标设置为ES6,编译器将自动定位lib.core.es6.d.ts,而无需您自己执行此操作。这样做的缺点是,编译后的输出也将是ES6兼容的JavaScript,而不是ES5。例如,如果您在TypeScript代码中使用任何类,则编译器会将JavaScript类输出到输出文件。

要解决此问题,您可以手动将引用更改为lib.core.es6.d.ts作为basarat提及,或者您可以添加类似babel的内容,以便将ES6代码转换为合规{ {1}}自动代码。

作为示例,我最近将ES5omnisharp-atom移至目标omnisharp-client,并使用babel作为额外的转换程序来生成ES6源文件。

https://github.com/OmniSharp/omnisharp-node-client/blob/master/tsconfig.json#L7-L9 https://github.com/OmniSharp/omnisharp-atom/blob/master/gulpfile.js#L45-L52 https://github.com/OmniSharp/omnisharp-node-client/blob/master/gulpfile.js#L54-L61