TypeScript Essentials

Урок 06 · 8 хв

type vs interface

Майже одне й те саме. Різниця — у парі випадків, а не в релігії.

Обидва описують форму об'єкта. У застосунку обирай одне й не змішуй без причини. Handbook кладе їх поруч: Type Aliases і Interfaces. Нижче — фактична різниця, а не смаківщина.

interface можна оголосити вдруге — поля зіллються. Так влаштовані типи DOM: бібліотека дописує Window чи HTMLElement. У власному застосунку це частіше пастка: два файли випадково оголосили один User, і форма роз'їхалася. type так не зливається — повторне ім'я буде помилкою.

JavaScript
TypeScript

Ліворуч — declaration merging. Праворуч — те, чого interface не вміє.

  • type уміє union, intersection, tuple, mapped, умовні типи.
  • interface уміє extends і зливається при повторному оголошенні. Так влаштовані типи DOM і багатьох бібліотек.
  • Для своїх сутностей у застосунку бери type. Для публічного об'єкта бібліотеки, який інші доповнюватимуть, — interface.
extends і перетин
AI

Можна спитати про це правило«Не сперечайся через це на рев'ю»

AI

Можна спитати про цей пункт«Суть уроку»

Перевірка

Закріпи, поки не пішов далі

  1. 1. Чим описати "idle" | "loading" | "error"?