В TypeScript ключевое слово type используется для объявления алиасов типов, а interface — для описания структур объектов и контрактов.
Чем type отличается от интерфейса в TypeScript? Когда что используешь?
В TypeScript ключевое слово type используется для объявления алиасов типов, а interface — для описания структур объектов и контрактов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В TypeScript ключевое слово type используется для объявления алиасов типов, а interface — для описания структур объектов и контрактов.
interfaceпредназначен для описания формы объекта, поддерживает декларативное расширение (наследование) черезextendsи может быть расширен в нескольких местах (declaration merging).typeпозволяет создавать алиасы для любых типов (примитивы, объединения, пересечения, кортежи и т.д.), но не поддерживает декларативное расширение, хотя можно комбинировать типы через&(пересечение) и|(объединение).
Наследование:
- В
interfaceнаследование происходит черезextends:
interface A { a: string }
interface B extends A { b: number }
- В
typeнаследование реализуется через пересечение типов:
type A = { a: string }
type B = A & { b: number }
Ключевые отличия:
interfaceлучше подходит для описания объектов и классов, поддерживает декларативное расширение и декларативное объединение.typeболее универсален, позволяет описывать сложные типы, но не поддерживает декларативное расширение интерфейсов.
Выбор зависит от задачи: если нужно описать структуру объекта с возможностью расширения — interface, если нужен сложный составной тип — type.