我正在尝试为我的对象创建一个接口。下面是对象的数据结构:
{
"isLoaded": true,
"items": {
"0": {
"name": "Mark",
"age": "40"
},
"1": {
"name": "Alex",
"age": "41"
},
"2": {
"name": "Foo",
"age": "42"
},
}
}
我创建的界面如下所示
interface Items {
"name": string;
"age": string;
}
interface ItemData {
"isLoaded": boolean;
"items" : Items;
}
这是为上述数据结构创建接口的正确方法吗?
interface ItemData {
"isLoaded": boolean;
"items" : {
[key: string]: Items
}
}
参考文献 https://www.typescriptlang.org/docs/handbook/interfaces.html#indexable-types
interface Item {
name: string;
age: string;
}
interface ItemData {
isLoaded: boolean;
items: {
[key: string]: Item
}
}
或者同样的东西,但更干净一点
interface ItemData {
isLoaded: boolean;
items: Record<string, Item>
}
你写的
interface ItemData {
"isLoaded": boolean;
"items" : Items;
}
这意味着items
是一个单一的Items
对象,而它应该是字符串键存储Items
对象的记录。
[key: string]: Item
是可索引类型,Record<string, Item>
是引擎盖下相同可索引类型的泛型