你如何编写有效的 JS 表达式 [..Array(5).keys()] 在 TypeScript 中没有错误?



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

let myArray = [...Array(5).keys()];
console.log(myArray);   // [0,1,2,3,4]

这会在打字稿中生成错误...

数组(...(。键(...切片不是函数

我将如何在 TypeScript 中将其编写为代码?

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);

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

最新更新