Когда уместнее использовать `type`, а когда `interface` в TypeScript?
interface:
- Описание форм объектов/классов
- Поддерживает
extends,implementsи декларативное слияние (declaration merging) - Кешируется компилятором — быстрее при пересечениях
type:
-
Объединения (
|) и пересечения (&) -
Условные и шаблонные типы
-
Алиасы примитивов, кортежей, mapped types
-
interfaceможет расширятьtype, если тот раскрывается в объектный тип (не union) -
Нельзя выразить union через
interface; для этого используютtype