Какие плюсы и минусы написания всего на interface в TypeScript

«Какие плюсы и минусы написания всего на interface в TypeScript» — вопрос из категории TypeScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Плюсы:

  • Интерфейсы поддерживают объединение (merging) – можно расширять их в разных местах кода
  • Более легковесные, не участвуют в рантайме
  • Лучше работают с объектами и классами (implements)
  • Удобны для описания формы данных (DTO, API-ответы)

Минусы:

  • Нет дефолтных значений
  • Нельзя использовать примитивы (type alias может)
  • Сложнее описывать сложные типы (условные, mapped types)
  • Нет intersection (&) и union (|)

Пример:

interface User {
  id: number;
  name: string;
}

// Расширение интерфейса
interface Admin extends User {
  role: string;
}

// vs type
type UserType = {
  id: number;
  name: string;
}