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

Typescript: use lib.core.es6.d.ts

我正在使用打字稿,并尝试使用 ES6 映射,但出现编译错误。

我发现我需要引用文件 lib.core.es6.d.ts (),而且我知道它在我的文件系统中的什么位置。但是,我找不到任何指定如何使用该文件的内容。

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

如何在其中一个文件中使用 es6 类型?如果答案是"restructure your project the way site X says to",我会发牢骚,但我想没关系。

However, I can't find anything that specifies what to do to use that file.

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

默认构建目标是针对 ES5,这会强制编译器使用默认 lib.core.d.ts,因为它无法假设 ES6 类型可用。

如果您将目标设置为 ES6,编译器将自动将目标设置为 lib.core.es6.d.ts,您无需自己设置。这确实有一个缺点,即您的编译输出也将 ES6 兼容 JavaScript 而不是 ES5。例如,这意味着如果您在 TypeScript 代码中使用任何 类,编译器将输出 JavaScript 类 到输出文件。

为了解决这个问题,您可以像 basarat 提到的那样手动更改对 lib.core.es6.d.ts 的引用,或者您可以添加类似 babel 的内容,将 ES6 代码转换为合规 ES5 自动为您提供代码。

举个例子,我最近将 omnisharp-atomomnisharp-client 转移到目标 ES6 并使用 babel 作为额外的转译器来生成 ES5 源文件。

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