gpt4 book ai didi

javascript - typescript -> ES5问题

转载 作者:行者123 更新时间:2023-11-30 15:44:26 25 4
gpt4 key购买 nike

我用 typescript 写的:

const mask = [...Array(10)].map((item) => 0);

在 Node 控制台中,它生成一个包含 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; })
[ , , , , , , , , , ]

我的印象是 typescript 应该生成等功能代码。我错了吗?我应该关注 TS 正在制作的所有内容吗?

我正在使用 Node v7,tsc 1.20150623.0 和这个配置:

{
"compilerOptions": {
"emitDecoratorMetadata": true,
"module": "commonjs",
"target": "ES5",
"outDir": ".tmp/js",
"rootDir": "js"
}
}

最佳答案

这是一个 known and open issue with TypeScript这应该在 TypeScript 2.1 中得到修复。

The following code:

[...(new Array(5))]

translates into:

(new Array(5)).slice();

However, the ES6 meaning is not the same. See the output below:

> [...(new Array(5))]
[ undefined, undefined, undefined, undefined, undefined ]
> (new Array(5)).slice();
[ , , , , ]

Expected behavior:

Array.apply(null, Array(5))

关于javascript - typescript -> ES5问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40311468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com