Sobes.tech
Назад к вопросам
Middle
2

Когда ты сам будешь использовать interface, а когда type? Почему предпочтёшь type?

Компании, где спрашивали
СберInfra.cloud

Ответ от нейросети

sobes.tech AI

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

Когда использовать interface:

  • Для описания структуры объектов и классов.
  • Когда нужно расширять типы через extends или декларативное слияние интерфейсов.
  • Если планируется использовать декларативное слияние интерфейсов (например, для расширения типов из библиотек).

Когда использовать type:

  • Для объединения типов (union), пересечения (intersection), примитивов, кортежей и других сложных типов.
  • Когда нужна большая гибкость в описании типов.
  • Для алиасов примитивов и сложных выражений типов.

Почему предпочитаю type:

  • type более универсален и позволяет описывать не только объекты, но и объединения, пересечения, примитивы.
  • Нет ограничений на повторное объявление, что снижает риск неожиданных слияний.
  • Часто удобнее для сложных типов и композиции.

Пример использования type для объединения и описания объекта:

type User = {
  id: number;
  name: string;
};

type Admin = User & {
  role: 'admin';
};

type Guest = {
  role: 'guest';
};

type Person = Admin | Guest;

В то время как interface больше подходит для описания структуры и расширения:

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

interface Admin extends User {
  role: 'admin';
}