let result: [CusomClass1Instance, Number, CusomClass2Instance][]
这是一个“元组”数组,Typescript 使用它来表示每个元素可能具有不同类型的固定长度数组。外部数组的每个元素都是一个包含三个元素的数组:CusomClass1Instance、Number 和 CustomClass2Instance。这使得它成为数组的数组, but 外部数组每行一个元素.
// incorrect
result=[[new CusomClass1Instance(_id)], [new Number()], [new CusomClass2Instance(_id)]][];
在这里,您将其分配给一个三元素数组,其中三个元素中的每一个都是一个数组。即使在作业中,您也可以在末尾应用一组空方括号。无论如何,这种语法更接近于不同的结构,其中外部数组每列一个元素.
初始化
一旦你设置了数组类型,Typescript 很乐意让你设置一个空数组作为初始化器:
result = [];
如果你想将它初始化为非空,你也可以这样做,但是你必须将它分配给一个三元素数组的数组:
result = [[new CusomClass1Instance(_id), new Number(), new CusomClass2Instance(_id)]];
请注意,您使用了两组方括号:外括号用于元组数组,内括号用于定义元组。另请注意,您可能不需要致电new Number()
,但可以只传递数字本身:
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.