我正在使用typescript,并尝试使用ES6地图,但却遇到了编译错误。
我已经发现我需要引用文件lib.core.es6.d.ts
(ES6 Map in Typescript),我知道文件系统的位置。但是,我无法找到任何指定如何使用该文件的内容。
现在,我只在我正在编译的文件夹中有两个文件
tsc --module amd treenode.ts treemerge.ts
如何在其中一个文件中使用es6类型?如果答案是"按照网站X对#34;的方式对项目进行重组,我会发牢骚但我想这没关系。
答案 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}}自动代码。
作为示例,我最近将ES5
和omnisharp-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