Чем type отличается от интерфейса в TypeScript? Когда что используешь?

В TypeScript ключевое слово type используется для объявления алиасов типов, а interface — для описания структур объектов и контрактов.

Короткий ответ

Что ответить на собеседовании

В 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.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку