> Что такое интерфейсы и типы в TypeScript, для чего они нужны и чем отличаются? (JavaScript)
Уровень: junior · Роль: frontend · Язык: JavaScript · Категория: Технические вопросы
Компании: TrendTech
Стек: Node.js, JavaScript, TypeScript
> Пример ответа
В TypeScript интерфейсы и типы (type aliases) - это два способа описать форму данных: какие свойства и методы у объекта, какие типы у переменных, параметров и возвращаемых значений.
Интерфейс (interface) - это контракт, который определяет структуру объекта. Он может быть расширен (extends) или объединён с другим интерфейсом. Интерфейсы поддерживают декларативное слияние - если объявить два интерфейса с одним именем, они автоматически объединятся.
TYPESCRIPTinterface User {name: string;age: number;}interface Admin extends User {role: string;}
Тип (type) - это псевдоним для любого типа данных: примитива, объединения (|), пересечения (&), кортежа, функции и т.д. Типы не могут быть переобъявлены, но с помощью & можно создавать пересечения.
TYPESCRIPTtype ID = string | number;type Point = { x: number; y: number };type NamedPoint = Point & { name: string };
Основные отличия:
-
Интерфейсы только для объектов (и классов через
implements), типы - для любых данных. -
Интерфейсы поддерживают декларативное слияние (полезно для расширения сторонних библиотек), типы - нет.
-
Типы позволяют создавать условные типы, маппированные типы и работать с шаблонными литералами, что невозможно в интерфейсах.
-
Для простых объектных структур оба подхода взаимозаменяемы, но в сообществе принято использовать
interfaceдля публичных API и объектов, аtype- для сложных композиций и утилит.
Когда что выбирать:
-
Если нужно описать объект, который будет расширяться или реализовываться классом -
interface. -
Если нужен union, intersection, примитив, кортеж или продвинутая манипуляция типами -
type. -
Если вы пишете библиотеку и хотите, чтобы пользователи могли расширять ваши типы через слияние -
interface.
> Похожие задачи по JavaScript
Какие паттерны проектирования вы знаете и использовали в работе
Что такое принципы SOLID и как они помогают писать структурированный код
Какой опыт работы с REST API и какими инструментами пользовалась
Для чего используется хук useCallback в React
> Похожие задачи по frontend
Какие паттерны проектирования вы знаете и использовали в работе
Что такое принципы SOLID и как они помогают писать структурированный код
Какой опыт работы с REST API и какими инструментами пользовалась
Для чего используется хук useCallback в React
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью