[英]Typescript -> ES5 issue
我用打字稿写的:
const mask = [...Array(10)].map((item) => 0);
在节点控制台中,它产生一个由10个零组成的数组:
> [...Array(10)].map((item) => 0);
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
一旦在javascript中转译,它会产生:
var mask = Array(10).slice().map(function (item) { return 0; });
但这并不等效:
> Array(10).slice().map(function (item) { return 0; })
[ , , , , , , , , , ]
我的印象是打字稿应该产生同功能的代码。 我说错了吗 我应该注意TS生产的一切吗?
我正在使用此配置使用节点v7,tsc 1.20150623.0:
{
"compilerOptions": {
"emitDecoratorMetadata": true,
"module": "commonjs",
"target": "ES5",
"outDir": ".tmp/js",
"rootDir": "js"
}
}
这是TypeScript的一个已知公开问题 ,应在TypeScript 2.1中修复。
如下代码:
[...(new Array(5))]
转换为:
(new Array(5)).slice();
但是,ES6的含义不相同。 请参见下面的输出:
> [...(new Array(5))] [ undefined, undefined, undefined, undefined, undefined ] > (new Array(5)).slice(); [ , , , , ]
预期行为:
Array.apply(null, Array(5))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.