阐明Typescript的目标和库设置的功能

时间:2019-05-15 01:31:14

标签: javascript typescript ecmascript-5 ecmascript-2017

当tsconfig.json具有以下内容

"target": "es5",
"lib": [ "es6", "dom", "es2017" ]

它似乎没有将es2017构造转换为es5。例如,以下将在IE11上失败:

var foo = [1, 2, 3].includes(1);

这是设计使然还是我缺少tsconfig.json中的设置?

2 个答案:

答案 0 :(得分:1)

  

说明Typescript的目标和库设置的功能

我考虑的简化方法是target表示输出JavaScript将具有的语法,而lib表示 API成员您的TypeScript源代码可以使用。这两个问题的答案中有更多详细信息:

  

...似乎没有将es2017构造转换为es5 ...这是设计使然还是我缺少tsconfig.json中的设置?

您是对的。这是设计使然。 TypeScript转换为target语法;它不会填充target中缺少的API成员。 Here is a quote来自TypeScript团队的核心成员:

  

我认为您正在将转译与自动填充混为一谈。 TypeScript不会像Babel那样自动为您填充,但是会执行语法下移(例如,箭头功能)。如果您想使用ES6运行时原型方法,则只需提供一个适当的ES6 polyfill及其随附的定义文件。

如果您的lib包含Array.prototype.include运行时中不存在的API成员(例如target),那么您需要安装提供这些API成员的polyfill。

答案 1 :(得分:0)

您可以在此处查看列表浏览器兼容性,以了解包含方法。

enter image description here

在此情况下,它不支持IE。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes