gpt4 book ai didi

javascript - 在 TypeScript 中使用时,ES6 功能是否编译为 ES5?

转载 作者:搜寻专家 更新时间:2023-10-30 21:02:52 26 4
gpt4 key购买 nike

当我在 TypeScript 文件中使用 ES6 功能时,例如模板字符串、箭头函数、解构。然后我将文件编译为普通的 JavaScript ...

ES6 语法是否也由 TypeScript 编译器编译?还是我必须使用额外的编译器 (Babel)?

最佳答案

Are the ES6 syntax compiled too by the TypeScript compiler? Or do I have to use an additional compiler (Babel)?

我不同意 Fylax 的回答。 TypeScript 编译器不需要额外的工具来将 ES6 语法转换为 ES 3 或 5。

TypeScript 编译器将新语法(letfor …of、箭头函数、rest 参数等)转换为 ES 3 或 5。但它不会不单独提供任何 polyfill。为了在旧的 VM ES 3 或 5 上使用最新的 API(如 Promise),您必须:

  1. 加载使 API 可用的 polyfill(如 es6-promise);
  2. 让编译器使用此 API 的标准类型。

这是一个稳健的设计选项。使用 typeScript,您必须仔细选择所需的 polyfill,并在您定位的不同浏览器上测试它们。

默认情况下,当目标是 ES 3 或 ES 5 时,编译器不使用最新 ECMAScript API 的定义。参见 the documentation :

Note: If --lib is not specified a default library is injected. The default library injected is:

► For --target ES5: dom,es5,scripthost

如果 polyfill 使 API 可用,那么我们可以配置编译器来使用它。以下是在 ES5 VM 上使用 promises 的配置文件 tsconfig.json 示例:

{
"compilerOptions": {
"target": "es5",
"lib": ["dom", "es5", "es2015.promise"]
}
}

但是,与 TypeScript 相比,Babel 可以将更多功能转换为 ES 5。参见 the compatibility table from Kangax .

关于javascript - 在 TypeScript 中使用时,ES6 功能是否编译为 ES5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40779346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com