打字稿:如何定义嵌套对象的接口?

时间:2017-02-14 00:49:46

标签: typescript

假设我有一个JSON有效负载解析为这样的东西:

{
    name: "test",
    items: {
        "a": {
            id: 1,
            size: 10
        },
        "b": {
            id: 2,
            size: 34
        }
    }
}

我如何设置Example接口的定义来建模items属性的值是一个对象,其键是字符串,其值由Item接口定义:

export interface Example {
    name: string;
    items: ???;

}

export interface Item {
    id: number;
    size: number;
}

1 个答案:

答案 0 :(得分:89)

Typescript允许您使用语法[key: string]添加对象键的类型。

如文档中所述,这些称为indexable types

  

可索引类型具有索引签名,该签名描述了我们可以用来索引对象的类型,以及索引时相应的返回类型。

在您的情况下,您将使用以下内容:

export interface Item {
    id: number;
    size: number;
}

export interface Example {
    name: string;
    items: {
        [key: string]: Item
    };
}

供参考,这是一个link to a live example