Typescript 具有自定义类的多维数组

Typescript 具有自定义类的多维数组,typescript,Typescript,我正在寻找一个数组声明,初始化和访问的数组将有 表/数组(及其行)如下所示: CusomClass1Instance;Number;CusomClass2Instance CusomClass1Instance;Number;CusomClass2Instance CusomClass1Instance;Number;CusomClass2Instance CusomClass1Instance;Number;CusomClass2Instance ... le

我正在寻找一个数组声明,初始化和访问的数组将有

表/数组(及其行)如下所示:

    CusomClass1Instance;Number;CusomClass2Instance
    CusomClass1Instance;Number;CusomClass2Instance
    CusomClass1Instance;Number;CusomClass2Instance
    CusomClass1Instance;Number;CusomClass2Instance
...
let result: [CusomClass1Instance, Number, CusomClass2Instance][] 
result= [[new CusomClass1Instance(_id)], [new Number()], [new CusomClass2Instance(_id)]][];
我曾经这样声明:

    CusomClass1Instance;Number;CusomClass2Instance
    CusomClass1Instance;Number;CusomClass2Instance
    CusomClass1Instance;Number;CusomClass2Instance
    CusomClass1Instance;Number;CusomClass2Instance
...
let result: [CusomClass1Instance, Number, CusomClass2Instance][] 
result= [[new CusomClass1Instance(_id)], [new Number()], [new CusomClass2Instance(_id)]][];
为了初始化,我尝试了以下方法:

    CusomClass1Instance;Number;CusomClass2Instance
    CusomClass1Instance;Number;CusomClass2Instance
    CusomClass1Instance;Number;CusomClass2Instance
    CusomClass1Instance;Number;CusomClass2Instance
...
let result: [CusomClass1Instance, Number, CusomClass2Instance][] 
result= [[new CusomClass1Instance(_id)], [new Number()], [new CusomClass2Instance(_id)]][];
在这种情况下,我很难: 1.初始化为空 2.写入(使用推送、索引) 3.访问它

提前谢谢你

let result: [CusomClass1Instance, Number, CusomClass2Instance][]
这是一个“元组”数组,Typescript使用它来表示一个固定长度的数组,每个元素的类型可能不同。外部数组的每个元素都是一个包含三个元素的数组:cusomclassinstance、Number和CustomClass2Instance。这使它成为一个数组数组,但外部数组每行有一个元素

这里您将其分配给一个三元素数组,其中三个元素中的每一个都是一个数组。即使在作业中,您也会在末尾应用一组空的方括号。无论如何,这种语法更接近于一种不同的结构,其中外部数组每列有一个元素

初始化 设置数组类型后,Typescript很乐意让您将空数组设置为初始值设定项:

result = [];
如果要将其初始化为非空,也可以这样做,但必须将其分配给包含三个元素的数组:

result = [[new CusomClass1Instance(_id), new Number(), new CusomClass2Instance(_id)]];
请注意,您使用了两组方括号:外括号用于元组数组,内括号用于定义元组。另外请注意,您可能不需要调用
新号码()
,而只需传递号码本身即可:

result = [
    [new CusomClass1Instance(id1), 1, new CusomClass2Instance(id1)],
    [new CusomClass1Instance(id2), 2, new CusomClass2Instance(id2)]
];
修改和访问 可以推送到结果数组,但需要确保推送到的每个元素都是匹配的三元素元组

result.push([new CusomClass1Instance(_id), new Number(), new CusomClass2Instance(_id)]);
当您访问它时,这也适用:

let threeElementArray = result[index];
threeElementArray[0] // CusomClass1Instance
threeElementArray[1] // number
threeElementArray[2] // CusomClass2Instance
您可以使用解包/解构语法简化此过程:

let [class1, yourNumber, class2] = result[index];
// Now you have one variable per value, without defining an explicit
// threeElementArray variable.