我很难理解tsc
目标版本的含义(ES3与ES5)。
在TypeScript中,输出仍然使用Array.prototype.reduce即使我以ES3为目标,它说人们应该将其作为语言规范来阅读,但并没有澄清很多事情。据我所知,设置--目标
对输出和警告/错误消息都没有任何影响。
我认为此选项是为了支持Visual Studio功能是否正确?
TypeScript 是 JavaScript 的超集,因此编译器只接触非 JavaScript 位,需要用 JavaScript 代码替换。“target”标志仅用于告诉编译器它可以在此处使用哪些功能。例如,如果您以 ES3 为目标,则具有属性访问器的 TypeScript 类将不会编译,因为编译器无法转换
class Foo {
public get bar(): string {
return 'Bar';
}
}
转换成有效的ES3 JavaScript。
Array.prototype.reduce
是一个API。TypeScript编译器不提供API。TypeScript开发人员需要了解JavaScript及其API。与CoffeeScript相同:“这只是JavaScript”。
例如,在 TS 代码中,可以使用 API Array.prototype.reduce
,然后将代码转换为 ES3 语法。它将在带有es5-shim的IE8上运行。