在TypeScript中使用对象键入数组的定义

问题描述 投票:2回答:2

如何在TypeScript中为这样的数组定义类型:

export const AlternativeSpatialReferences: Array< ??? > = [
    {
        '25833': 25833
    },
    {
        '25832': 25832
    },
    {
        '25831': 25831
    },
    {
        'Google': 4326
    } 
];

现在我只使用Array <{}>,但想要正确定义。

arrays typescript typescript-typings
2个回答
4
投票

如果要定义一个在编译时不知道属性名称的对象以及哪些值是数字,则应使用“索引签名”(Thanks @Joe Clay):

interface MyObject {
    [propName: string]: number;
}

然后你可以写:

export const AlternativeSpatialReferences: MyObject[] = [
    {
        '25833': 25833
    },
    {
        '25832': 25832
    },
    {
        '25831': 25831
    },
    {
        'Google': 4326
    } 
];

3
投票

在打字稿中你使用any类型,

任何用于 - 需要描述我们在编写应用程序时不知道的变量类型。

 Array<any>

如果你想要一个强大的类型,你应该创建具有两个属性的新类

public class KeyValue
{
  key:string;
  value:number;
}

 let myarray: KeyValue[] = new Array<KeyValue>();
 myarray.push({key: '25833' , value : 25833});
 myarray.push({key: 'Google' , value : 123});

并以强类型转换您当前的数组值。

© www.soinside.com 2019 - 2024. All rights reserved.