如何在打字稿中创建一个零数组?

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

确保包含&lt;number&gt;,否则它会将a 的类型推断为any[]

【讨论】:

这快把我逼疯了。它在最新的打字稿编译器中失败。% tsc --version Version 3.9.2 % cat ./fill.ts const a = new Array&lt;number&gt;(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&lt;number&gt;(1000).fill(0); 您可能需要更改tsconfig.json 中的target 设置。 没错。 Array.fill 是 ES6,所以 target 必须指定 ES6。谢谢你的提示!

以上是关于如何在打字稿中创建一个零数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何在反应打字稿的导航栏中创建动态元素

如何使用位在javascript项目中创建打字稿组件?

在打字稿中创建随机字符串[重复]

如何在打字稿的泛型类中创建类型为“T”的新对象?

在打字稿中创建指令以显示角度加载进度

在打字稿中创建对象