Javascript 如何在TypeScript中编写有效的JS表达式[…数组(5).keys()]而不出错?

Javascript 如何在TypeScript中编写有效的JS表达式[…数组(5).keys()]而不出错?,javascript,typescript,Javascript,Typescript,可以使用以下代码在JavaScript中生成填充递增整数的数组: 让myArray=[…数组(5).keys(); console.log(myArray);//[0,1,2,3,4]在tsconfig.json文件中设置“downlevelIteration”:true,以便将其编译为更符合规范的扩展运算符实现 为便于比较,以下是未启用的输出: "use strict"; var myArray = Array(5).keys().slice(); console.log(myArray);

可以使用以下代码在JavaScript中生成填充递增整数的数组:

让myArray=[…数组(5).keys();
console.log(myArray);//[0,1,2,3,4]
tsconfig.json
文件中设置
“downlevelIteration”:true
,以便将其编译为更符合规范的扩展运算符实现

为便于比较,以下是未启用的输出:

"use strict";
var myArray = Array(5).keys().slice();
console.log(myArray);
这是你想要的结果:

"use strict";
var __read = (this && this.__read) || function (o, n) {
    var m = typeof Symbol === "function" && o[Symbol.iterator];
    if (!m) return o;
    var i = m.call(o), r, ar = [], e;
    try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
    }
    catch (error) { e = { error: error }; }
    finally {
        try {
            if (r && !r.done && (m = i["return"])) m.call(i);
        }
        finally { if (e) throw e.error; }
    }
    return ar;
};
var __spread = (this && this.__spread) || function () {
    for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
    return ar;
};
var myArray = __spread(Array(5).keys());
console.log(myArray);
“严格使用”;
var uu read=(this&&this.u read)|函数(o,n){
var m=typeof Symbol==“函数”&&o[Symbol.iterator];
如果(!m)返回o;
var i=m.call(o),r,ar=[],e;
试一试{
而((n==void 0 | | n-->0)和&!(r=i.next().done)ar.push(r.value);
}
捕获(错误){e={error:error};}
最后{
试一试{
如果(r&&!r.done&(m=i[“return”])m.call(i);
}
最后{if(e)抛出e.error;}
}
返回ar;
};
var uu-spread=(this&&this.u-spread)|函数(){
对于(var ar=[],i=0;i

它看起来很长,但是,呃,当您想要支持较旧的浏览器时,这就是您得到的\_(ツ)_/“

我在TypeScript中也看到过这个错误,这很奇怪,因为
..
扩展语法使用
[Symbol.iterator]()
并重复调用
.next()
,而不是
.slice()
执行丑陋的
数组。from({length:5},(\ui)=>I)
在TypeScript中工作?甚至
数组。from(数组(5.keys())
需要深入研究tsconfig.json。