如何在打字稿中创建一个零数组?
Posted
技术标签:
【中文标题】如何在打字稿中创建一个零数组?【英文标题】:How to create an array of zeros in typescript? 【发布时间】:2015-06-29 10:06:41 【问题描述】:目前,我正在使用 Array.apply(null, new Array(10)).map(Number.prototype.valueOf, 0);
创建一个 0 数组。
我想知道在打字稿中是否有更好(更清洁)的方法?
【问题讨论】:
在普通的 JS 中你可以做类似Array(10).fill(0)
.
或类型化数组之一,例如。 G。 Int32Array(10)
如果仅与数字有关。
@Xufox *使用 polyfill,但绝对是最好的方法。
【参考方案1】:
回顾了阵列孔的概念后,我会这样做:
Array.apply(null, new Array(10)).map(()=> 0);
节省不多,但也有一些。
【讨论】:
【参考方案2】:您可以添加到打开的Array<T>
接口以使fill
方法可用。如果您想要旧版浏览器支持,可以使用polyfill for Array.prototype.fill on MDN。
interface Array<T>
fill(value: T): Array<T>;
var arr = Array<number>(10).fill(0);
View on Playground
最终fill
方法将进入lib.d.ts
文件,您可以删除您的文件(当您需要这样做时编译器会警告您)。
【讨论】:
【参考方案3】:您可以将整数参数传递给 Array 构造函数,这将返回一个新的 javascript 数组,其长度属性设置为该数字,此外,您可以使用 .fill
从索引零开始填充数组的所有元素。
const data = ([...Array(10).fill(0)])
console.log(data)
【讨论】:
【参考方案4】:现在你可以做
const a = new Array<number>(1000).fill(0);
确保包含<number>
,否则它会将a
的类型推断为any[]
。
【讨论】:
这快把我逼疯了。它在最新的打字稿编译器中失败。% tsc --version Version 3.9.2 % cat ./fill.ts const a = new Array<number>(1000).fill(0); % tsc ./fill.ts fill.ts:1:35 - error TS2339: Property 'fill' does not exist on type 'number[]'. 1 const a = new Array<number>(1000).fill(0);
您可能需要更改tsconfig.json
中的target
设置。
没错。 Array.fill 是 ES6,所以 target 必须指定 ES6。谢谢你的提示!以上是关于如何在打字稿中创建一个零数组?的主要内容,如果未能解决你的问题,请参考以下文章