我想将几个接口(interface)组合成一个接口(interface):Member
:
interface Person {
name?: {
firstName?: string;
lastName?: string;
};
age: number;
birthdate?: Date;
}
interface User {
username: string;
email: string;
}
interface Player {
room: number;
group?: number;
}
我的问题是:如何通过组合上述接口(interface)创建一个新接口(interface):Member
,所以我最终得到以下内容:
interface Member {
firstName: string;
lastName: string;
age: number;
birthdate?: Date;
username: string;
email: string;
room: number;
group?: number;
}
请注意,结构发生了一些变化。例如,Person["name"]
中的字段现在直接包含在新界面的根级别。此外,这些字段现在是必填字段(之前它们是可选的)。
谢谢!
最佳答案
将 Person
界面变成“扁平化”界面,让我们创建一个名为 PersonName
的新界面,新界面如下所示:
interface PersonName {
firstName?: string;
lastName?: string;
}
然后,Person
界面会变成:
interface Person {
name?: PersonName;
age: number;
birthdate?: Date;
}
最后,Member
接口(interface)的定义语法如下:
interface Member extends Player, User, Omit<Person, 'name'>, PersonName {}
所有代码:Playground
关于javascript - TypeScript - 将多个接口(interface)组合成一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59134206/