Успадкування типу та інтерфейсу
1. Чи може тип (type) успадкувати інтерфейс?
Ні, напряму не може.
Типи (type) не підтримують ключове слово extends під час створення, тобто не можна написати так:
javascript
interface A {
name: string;
}
type B extends A = { age: number }; // ПомилкаАле можна об'єднати тип та інтерфейс через перетин (&), що по суті еквівалентно успадкуванню:
javascript
interface A {
name: string;
}
type B = A & { age: number }; // ПрацюєТаким чином, тип не "успадковує" інтерфейс, але може його розширити за допомогою &.
2. Чи може інтерфейс успадкувати тип?
Так, якщо тип - об'єктна структура.
TypeScript дозволяє інтерфейсу успадковувати тип через extends, але лише якщо тип описує об'єкт (а не примітив, union тощо):
javascript
type A = { name: string };
interface B extends A {
age: number;
}
const obj: B = { name: "Tim", age: 25 }; // ПрацюєАле якщо тип не є об'єктом (наприклад, union або примітив), буде помилка:
javascript
type C = string | number;
interface D extends C {} // Помилка: інтерфейс може успадковувати лише об'єктні типиПідсумок
| Варіант | Чи можна успадкувати? | Приклад | Альтернатива |
|---|---|---|---|
| type → interface | Ні, напряму | type B extends A (помилка) | type B = A & { ... } (працює) |
| interface → type | Так, якщо type - об'єкт | interface B extends A {} (працює) | - |
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.