即使我以ES3为目标,TypeScript输出仍然使用Array.prototype.reduce

时间:2014-10-16 15:33:16

标签: typescript

我正在玩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中运行)。我错过了什么?

1 个答案:

答案 0 :(得分:2)

TypeScript不会为您填充或填充任何API。为此目的,有许多现成的polyfill库。

相关问题