Назад к вопросам
Middle
3
Чем type отличается от interface в TypeScript? Когда что используешь?
Компании, где спрашивали
Хайерлаб
Ответ от нейросети
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;