Sobes.tech
Back to questions
Middle
4

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

Companies where asked
Хайерлаб

Answer from AI

sobes.tech AI

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

  • interface предназначен для описания структуры объектов и может быть расширен (extends) или объединён (implements) в классах. Интерфейсы поддерживают декларативное слияние (declaration merging), то есть можно объявить интерфейс с одним именем в нескольких местах, и они объединятся.

  • type более универсален: с его помощью можно описывать не только объекты, но и объединения (union), пересечения (intersection), примитивы, кортежи и т.д. Однако type не поддерживает декларативное слияние.

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

  • Если нужно описать структуру объекта, особенно если планируется расширение или слияние — лучше interface.
  • Если нужен более сложный тип (объединение, пересечение, примитивы) — type.

Пример:

interface User {
  name: string;
}

interface User {
  age: number; // интерфейсы сливаются
}

const user: User = { name: "Alice", age: 30 };

// type не поддерживает слияние
// type User = { name: string };
// type User = { age: number }; // ошибка

// type для объединения
type ID = string | number;