tsconfig.json中的"target"是用来做什么的?

136

tsconfig.json 中,target 表示什么?

{
  "compilerOptions": 
  {
    "sourceMap": true,
    "target": "es5",
    "module": "commonjs",
    "jsx": "react",
    "moduleResolution": "classic",
    "lib": [ "es2015", "dom",  "es2017" ]
  }
}
3个回答

166
我对TypeScript还比较新,tsconfig.json中的Target是什么意思? target表示从给定的TypeScript发出哪个JavaScript目标。例如:

target:es5

()=>null将变为function(){return null},因为ES5没有箭头函数。

target:es6

()=>null将变为()=>null,因为ES6具有箭头函数。

更多信息

我还制作了一个快速的有关此主题的视频


8
如果我的目标是ES5,我是否仍需要Babel?另外,如果我的TypeScript代码包含async和await,如果将目标设置为ES5,它会被编译吗? - Ankit Raonka
6
不需要Babel做那件事。 - basarat
4
不会。例如,在Internet Explorer 11中无法使用,因为它不支持es6并且没有.map函数。即使您针对es5,它仍然无法在Internet Explorer中运行,因为转译器的工作不是添加polyfill。如果要支持非es6浏览器,仍需要添加polyfill。 - pabrams
@pabrams,所以IE11甚至不支持ES5的所有功能? - Qwerty
2
@Qwerty 嗯,我的意思是Typescript转译不会为您填充缺失的方法,它只处理语法。这个线程解释得相当清楚:https://github.com/frankwallis/plugin-typescript/issues/166 - pabrams
显示剩余2条评论

14

3
如果您的目标是 es2017,那么这就是具有新库引用共享内存和字符串的最新版本。更改您的目标意味着更改代码编译时使用的库。如果您想保持目标低版本同时支持高版本引用的库,则可以将所需的库添加到tsconfig.json中的"lib"中。
要了解不同版本中引用的库的更多信息,请参见答案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接