Назад к вопросам
Middle
5
В чём разница между type и interface в TypeScript?
Компании, где спрашивали
МВидео/эльдорадо
Ответ от нейросети
sobes.tech AI
В TypeScript type и interface часто используются для описания типов объектов, но между ними есть отличия:
-
Расширяемость:
interfaceможно расширять (extends) и объединять (declaration merging), то есть несколько объявлений с одним именем интерфейса объединяются.typeне поддерживает declaration merging, но можно создавать объединения и пересечения типов.
-
Возможности:
typeболее универсален — позволяет описывать не только объекты, но и объединения, пересечения, примитивы, кортежи и т.д.interfaceпредназначен только для описания структур объектов и классов.
-
Синтаксис и предпочтения:
interfaceчасто предпочтительнее для описания публичных API и классов, так как поддерживает декларативное расширение.typeудобен для сложных типов, например, объединений или mapped types.
Пример:
interface IUser {
name: string;
}
interface IUser {
age: number; // интерфейсы объединятся
}
const user: IUser = { name: 'Alice', age: 30 };
// type так не сработает:
// type User = { name: string };
// type User = { age: number }; // ошибка: Duplicate identifier 'User'
// type позволяет объединения:
type ID = string | number;