如何在TypeScript中定义基于对象的数组?

时间:2016-12-21 20:14:54

标签: javascript arrays typescript

在Javascript中,我可以使用对象定义集合,如下所示:

var myArray = {};
myArray['some-key1'] = new CustomObject('param1');
myArray['some-key2'] = new CustomObject('param2');
myArray['some-key3'] = new CustomObject('param3');

在TypeScript中,我可以根据对象的属性设置一个集合,比如Javascript吗?

另一个问题,如果我在一个集合中有100个元素,那么更快 - 将这些项存储在经典数组(myarray.push(instanceObj))中,还是将它们存储为对象的属性?

1 个答案:

答案 0 :(得分:1)

如果你有固定数量的钥匙,最好的办法是:

const myObject = {
    "some-key1": new CustomObject("param1"),
    "some-key2": new CustomObject("param2"),
    "some-key3": new CustomObject("param3"),
}

请注意,现在甚至像这样的类型检查:

myObject["some-key1"] // TypeScript correctly infers the type to be CustomObject!

如果您不能这样做,最好的方法是使用索引类型:

let myObject: { [key: string]: CustomObject };

向TypeScript指示myObject将字符串映射到CustomObjects。

  

另一个问题,如果我在一个集合中有100个元素,那么更快 - 将这些项存储在经典数组(myarray.push(instanceObj))中,还是将它们存储为对象的属性?

这实际上取决于你计划对数组/对象做什么。你的用例是什么?