我在玩Typescript,我想知道如何正确地实例化和声明多维array.这是我的代码:

class Something {
    private things: Thing[][];

    constructor() {
        things = [][]; ??? how instantiate object ???

        for(var i: number = 0; i < 10; i++) {
            this.things[i] = new Thing[];   ??? how instantiate 1st level ???
            for(var j: number = 0; j< 10; j++) {
                this.things[i][j] = new Thing();   ??? how instantiate 2nd lvl item ???
            }
        }
    }
}

你能给我一些关于选定地点的提示吗?

推荐答案

你只需要[]就可以实例化一个数组——不管它是什么类型,这都是正确的.数组属于数组类型这一事实无关紧要.

同样的事情也适用于循环的第一级.而一个新的数组只完成了[]个任务.

至于第二个级别,如果Thing是一个级别,那么new Thing()就可以了.否则,根据类型,可能需要使用工厂函数或其他表达式来创建工厂函数.

class Something {
    private things: Thing[][];

    constructor() {
        this.things = [];

        for(var i: number = 0; i < 10; i++) {
            this.things[i] = [];
            for(var j: number = 0; j< 10; j++) {
                this.things[i][j] = new Thing();
            }
        }
    }
}

Typescript相关问答推荐

net::BER_RECTION_REUSED和Uncatch使用Axios和TanStack-Query useMutation时未捕获错误(DelivercMutation)

将值添加到具有不同类型的对象的元素

基于键的值的打字动态类型;种类;

泛型类型,引用其具有不同类型的属性之一

在嵌套属性中使用Required

如何编写一个类型脚本函数,将一个对象映射(转换)为另一个对象并推断返回类型?

参数属性类型定义的REACT-RUTER-DOM中的加载器属性错误

为什么S struct 类型化(即鸭子类型化)需要非严格类型联合?

在Cypress中,是否可以在不标识错误的情况下对元素调用.Click()方法?

将对象的属性转换为正确类型和位置的函数参数

在Cypress中,您能找到表格中具有特定文本的第一行吗?

TypeScrip:使用Union ToInterval辅助对象,但保留子表达式

如果判断空值,则基本类型Gaurd不起作用

字符串文字联合的分布式条件类型

Rxjs将省略的可观测对象合并到一个数组中

如何键入对象转换器

类型脚本中参数为`T`和`t|unfined`的重载函数

有没有一种更好的方法来存储内存中的数据,而不是在类型脚本中使用数组和基于索引的函数?

如何在Vuetify 3中导入TypeScript类型?

TS 排除带点符号的键