
Урок 06 · 8 хв
type vs interface
Майже одне й те саме. Різниця — у парі випадків, а не в релігії.
Обидва описують форму об'єкта. У застосунку обирай одне й не змішуй без причини. Handbook кладе їх поруч: Type Aliases і Interfaces. Нижче — фактична різниця, а не смаківщина.
interface можна оголосити вдруге — поля зіллються. Так влаштовані типи DOM: бібліотека дописує Window чи HTMLElement. У власному застосунку це частіше пастка: два файли випадково оголосили один User, і форма роз'їхалася. type так не зливається — повторне ім'я буде помилкою.
Ліворуч — declaration merging. Праворуч — те, чого interface не вміє.
typeуміє union, intersection, tuple, mapped, умовні типи.interfaceумієextendsі зливається при повторному оголошенні. Так влаштовані типи DOM і багатьох бібліотек.- Для своїх сутностей у застосунку бери
type. Для публічного об'єкта бібліотеки, який інші доповнюватимуть, —interface.
Документація
- Type Aliases — union, tuple, перетин
- Interfaces — extends і форма об'єкта
- Declaration Merging — чому другий
interface Userдописує поля
Перевірка
Закріпи, поки не пішов далі
1. Чим описати
"idle" | "loading" | "error"?