假设我有一个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;
}
答案 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。