假设我有一个JSON有效负载,解析成这样的东西:
{
name: "test",
items: {
"a": {
id: 1,
size: 10
},
"b": {
id: 2,
size: 34
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何设置Example接口的定义以建模items属性的值是一个对象,其键是字符串,其值由Item接口定义:
export interface Example {
name: string;
items: ???;
}
export interface Item {
id: number;
size: number;
}
Run Code Online (Sandbox Code Playgroud)
Jos*_*ier 108
Typescript允许您使用语法为对象键添加类型[key: string].
如文档中所述,这些称为可索引类型:
索引的类型有描述,我们可以使用索引到的对象的类型,与相应的返回类型索引时沿指数的签名.
在您的情况下,您将使用以下内容:
export interface Item {
id: number;
size: number;
}
export interface Example {
name: string;
items: {
[key: string]: Item
};
}
Run Code Online (Sandbox Code Playgroud)
你想要的可以使用Record类型来实现
interface Item {
id: number;
size: number;
}
interface Example2 {
name: string;
items : Record<string, Item>;
}
var obj2: Example2 = {
name: "test",
items: {
"a": {
id: 1,
size: 10
},
"b": {
id: 2,
size: 34
},
"c": {
id: 3,
size: 34
}
}
}
Run Code Online (Sandbox Code Playgroud)
您还将获得编译时间检查:
| 归档时间: |
|
| 查看次数: |
41435 次 |
| 最近记录: |