我和TypeScript玩了一会儿,发现了一点奇怪的地方。假设我正在构建一个小应用程序(遗憾的是)也需要支持IE8。因此,我将类型转换-编译器设置为目标ES3。
我以为我可以在我的ECMAScript文件中安全地使用Array.prototype.reduce等Array.prototype.reduce 5.1的好东西,而TypeScript会为它提供某种类型的填充。然而,情况似乎并非如此:
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中运行)。我遗漏了什么?
发布于 2014-10-16 15:35:10
TypeScript不会为您提供任何API。为此目的,有许多现成的多填充库。
https://stackoverflow.com/questions/26408343
复制相似问题