Skip to main content

Успадкування типу та інтерфейсу

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

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.