我正在玩TypeScript,发现有点奇怪。让我们说我正在构建一个(遗憾地)需要支持IE8的小应用程序。所以我将TypeScript编译器设置为目标ES3。
我假设我可以安全地在我的.ts文件中使用ECMAScript 5.1好东西,例如Array.prototype.reduce
,并且TypeScript将负责包含某种类型的polyfill。但情况似乎并非如此:
function joinStuff (stuff : string[], joiner : string = ' ') {
return stuff.reduce((previous, current) =>
previous ? previous + joiner + current : current
) || '';
}
将编译成:
function joinStuff(stuff, joiner) {
if (joiner === void 0) { joiner = ' '; }
return stuff.reduce(function (previous, current) {
return previous ? previous + joiner + current : current;
}) || '';
}
现在这是不 ECMAScript 3兼容代码! (当然,它不会在IE8中运行)。我错过了什么?
答案 0 :(得分:2)
TypeScript不会为您填充或填充任何API。为此目的,有许多现成的polyfill库。