> Что такое интерфейсы и типы в TypeScript, для чего они нужны и чем отличаются? (JavaScript)

Уровень: junior · Роль: frontend · Язык: JavaScript · Категория: Технические вопросы

Компании: TrendTech

Стек: Node.js, JavaScript, TypeScript

> Пример ответа

В TypeScript интерфейсы и типы (type aliases) - это два способа описать форму данных: какие свойства и методы у объекта, какие типы у переменных, параметров и возвращаемых значений.

Интерфейс (interface) - это контракт, который определяет структуру объекта. Он может быть расширен (extends) или объединён с другим интерфейсом. Интерфейсы поддерживают декларативное слияние - если объявить два интерфейса с одним именем, они автоматически объединятся.

TYPESCRIPT
interface User {
name: string;
age: number;
}
interface Admin extends User {
role: string;
}

Тип (type) - это псевдоним для любого типа данных: примитива, объединения (|), пересечения (&), кортежа, функции и т.д. Типы не могут быть переобъявлены, но с помощью & можно создавать пересечения.

TYPESCRIPT
type ID = string | number;
type Point = { x: number; y: number };
type NamedPoint = Point & { name: string };

Основные отличия:

  • Интерфейсы только для объектов (и классов через implements), типы - для любых данных.

  • Интерфейсы поддерживают декларативное слияние (полезно для расширения сторонних библиотек), типы - нет.

  • Типы позволяют создавать условные типы, маппированные типы и работать с шаблонными литералами, что невозможно в интерфейсах.

  • Для простых объектных структур оба подхода взаимозаменяемы, но в сообществе принято использовать interface для публичных API и объектов, а type - для сложных композиций и утилит.

Когда что выбирать:

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

  • Если нужен union, intersection, примитив, кортеж или продвинутая манипуляция типами - type.

  • Если вы пишете библиотеку и хотите, чтобы пользователи могли расширять ваши типы через слияние - interface.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью