Назад к вопросам
Росатом
Junior — Middle
80
Какое отличие между типами и интерфейсами в TypeScript, и в чем их основные функции?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В TypeScript и типы (type), и интерфейсы (interface) служат для описания формата данных, но имеют некоторые отличия и особенности.
-
Интерфейсы (interface):
- Используются для описания структуры объектов.
- Поддерживают декларативное расширение (extends), что позволяет объединять интерфейсы.
- Могут быть реализованы классами (implements).
- Позволяют декларативное объединение (declaration merging), то есть можно объявить интерфейс с одним именем несколько раз, и они объединятся.
-
Типы (type):
- Более универсальны, могут описывать не только объекты, но и объединения, пересечения, примитивы, кортежи и т.д.
- Не поддерживают декларативное расширение, но можно создавать новые типы через объединения (|) и пересечения (&).
- Не поддерживают декларативное объединение.
Основные функции:
- Интерфейсы хорошо подходят для описания контрактов объектов и классов.
- Типы удобны для более сложных и гибких описаний, включая объединения и пересечения.
Пример:
interface IUser {
name: string;
age: number;
}
type ID = string | number;
type UserWithID = IUser & { id: ID };
В итоге, выбор зависит от задачи: если нужна гибкость и сложные типы — type, если нужен контракт для объектов и классов — interface.