扩展接口时如何在特定键内添加值?
How to add a value within specific key when extending an interface?
假设我有一个接口:
interface Person {
age: number
name: {
first: string
second: string
}
}
我想将 Person
扩展到 Friend
,这看起来与 Person
完全相同,但在 name
中增加了 nickname
值,像这样:
interface Friend {
age: number
name: {
first: string
second: string
nickname: string | null
}
}
我知道我能做到...
interface Friend extends Person {
nickname: string | null
}
...但这会将其添加到 name
.
之外
我想不出任何方法来实现这个,有什么想法吗?
您可以将 name: { first: string, second: string }
提取到一个单独的界面中并对其进行扩展。
例如:
interface Person {
age: number
name: Name
}
interface Friend extends Person{
name: FriendName
}
interface Name {
first: string
second: string
}
interface FriendName extends Name {
nickname?: string
}
您可以使用 type
关键字代替 interface
:
type Friend = Person & {
name: {
nickname: string
}
};
假设我有一个接口:
interface Person {
age: number
name: {
first: string
second: string
}
}
我想将 Person
扩展到 Friend
,这看起来与 Person
完全相同,但在 name
中增加了 nickname
值,像这样:
interface Friend {
age: number
name: {
first: string
second: string
nickname: string | null
}
}
我知道我能做到...
interface Friend extends Person {
nickname: string | null
}
...但这会将其添加到 name
.
我想不出任何方法来实现这个,有什么想法吗?
您可以将 name: { first: string, second: string }
提取到一个单独的界面中并对其进行扩展。
例如:
interface Person {
age: number
name: Name
}
interface Friend extends Person{
name: FriendName
}
interface Name {
first: string
second: string
}
interface FriendName extends Name {
nickname?: string
}
您可以使用 type
关键字代替 interface
:
type Friend = Person & {
name: {
nickname: string
}
};