繁体   English   中英

打字稿-> ES5问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM