Use the extends keyword. The new interface gets every property of the one it extends and adds its own, so a Circle has both color and radius.
interface Shape {
color: string;
}
interface Circle extends Shape {
radius: number;
}
// Multiple inheritance
interface TimestampedShape extends Shape, Timestamped {
area: number;
}
interface Timestamped {
createdAt: Date;
updatedAt: Date;
}
An interface can extend several interfaces at once, separated by commas, as TimestampedShape does. If two parents declare the same property with incompatible types, the compiler reports an error instead of picking one. Declaration order doesn't matter, which is why Timestamped can appear after the interface that uses it.
The alternative is an intersection of type aliases with &. An interface that extends creates one flat type that reports property conflicts. The compiler also caches checks between interfaces, so extends is the better default for object shapes.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓