如何为对象的对象添加接口



我正在尝试为我的对象创建一个接口。下面是对象的数据结构:

{
"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>是引擎盖下相同可索引类型的泛型

最新更新