在typescript中具有两种不同类型元素的数组的类型声明是什么



的声明类型是什么

export const serverInfo = {
"@me": {
unread: true,
},
servers: [
{
id: 1,
name: "Detaux",
unread: false,
type: "server",
icon: "detaux.webp",
gif: null,
},
// Many more ..
{
type: "folder",
servers: [
{
id: 5,
name: "freeCodeCamp",
unread: true,
type: "server",
icon: "freeCodeCamp.webp",
gif: null,
},
// Many more ..
],
},
],
};

在这个对象中,数组中有两种不同类型的元素,所以我对如何给出类型声明感到困惑。

您可以实现两个接口,ServerFolder,以及使用并集类型的类型Info(实际上,Info也可以是一个接口(:

interface Server {
id: number;
name: string;
unread: boolean;
type: string;
icon: string;
gif: string;
}
interface Folder {
type: 'folder';
servers: Server[];
}
type Info = { '@me': { unread: boolean }; servers: Array<Server | Folder> };
export const serverInfo: Info = { ... };

编辑:对我来说很好:

export const serverInfo: Info = {
'@me': {
unread: true
},
servers: [
{
id: 1,
name: 'Detaux',
unread: false,
type: 'server',
icon: 'detaux.webp',
gif: null
},
// Many more ..
{
type: 'folder',
servers: [
{
id: 5,
name: 'freeCodeCamp',
unread: true,
type: 'server',
icon: 'freeCodeCamp.webp',
gif: null
}
// Many more ..
]
}
]
};

最新更新