gpt4 book ai didi

javascript - typescript :合并/覆盖嵌套接口(interface)

转载 作者:行者123 更新时间:2023-11-30 07:52:25 25 4
gpt4 key购买 nike

我有像这样的深度嵌套对象(超过 3 层):

{
a1: 'foo1',
b1: [
{
c2: 'foo2',
d2: [
{
e3: 'foo3',
f3: 'foo3'
},
{
e3: 'bar3',
f3: 'bar3' }
]
}
]
};

并且我创建了这样的嵌套接口(interface):

export interface Level3 {
e3: string;
f3: string;
}

export interface Level2 {
c2: string;
d2: Level3[];
}

export interface Level1 {
a1: string;
b1: Level2[];
}

我正在将嵌套最深的对象转换为其他对象,同时保持上层结构的所有内容不变。例如:

export interface Level3Transformed {
e3Transformed: number[];
f3Transformed: number[];
}

export interface Level3 {
e3: string;
f3: string;
}

当我声明一个 Level1Transformed 接口(interface)时,它在其他方面与 Level1 相同,但具有 Level3Transformed 而不是 Level3,有没有办法重用所有中间接口(interface)(如 Level2)?

或者是否有其他一些聪明的方法来构造/声明类似的嵌套对象,同时避免大量重复的接口(interface)?

编辑:不使用 OR 运算符?

最佳答案

  export interface Level2 {
c2: string;
d2: Level3[] | Level3Transformed[];
}

或者您可以使用通用类型:

 export interface Level2<T> {
c2: string;
d2: T[];
}

export interface Level1<T> {
a1: string;
b1: Level2<T>[];
}

然后要么

  Level1<Level3>

 Level1<Level3Transformed>

关于javascript - typescript :合并/覆盖嵌套接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49693039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com