'How to add a value within specific key when extending an interface?
Let's say I have an interface:
interface Person {
age: number
name: {
first: string
second: string
}
}
And I want to extend Person to Friend, which would look exactly the same as Person but with an added nickname value in name, like so:
interface Friend {
age: number
name: {
first: string
second: string
nickname: string | null
}
}
I know I could do...
interface Friend extends Person {
nickname: string | null
}
...but this would add it outside of name.
I can't figure out any way to achieve this, any ideas?
Solution 1:[1]
You can do this by using the type keyword instead of interface:
type Friend = Person & {
name: {
nickname: string
}
};
Solution 2:[2]
You can extract name: { first: string, second: string } into a separate interface and extend that.
Ex.:
interface Person {
age: number
name: Name
}
interface Friend extends Person{
name: FriendName
}
interface Name {
first: string
second: string
}
interface FriendName extends Name {
nickname?: string
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | David Deutsch |
| Solution 2 | aaronlukacs |
