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

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

Компании: Иннотех, Инрэко, Точка, Kvando Technologies, Soft_Media_Group, ООО Премиум ИТ Солюшен, Kodix, Aston, The Tribe, ЛОЦИЯ, Swetec, DigitalSail, EdenAI, TYMY

Стек: TypeScript

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

Интерфейсы (interface) и типы (type) в TypeScript - это инструменты для описания формы данных: какие свойства и методы есть у объекта, их типы и обязательность. Они нужны для статической типизации: компилятор проверяет, что код использует данные корректно, что предотвращает ошибки на этапе разработки.

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

  • Интерфейсы предназначены в первую очередь для описания структуры объектов и классов. Их можно расширять (extends) и объединять (declaration merging - если объявить два интерфейса с одним именем, они сольются в один).

  • Типы (type alias) более гибки: могут описывать не только объекты, но и примитивы, объединения (union), пересечения (intersection), кортежи и т.д. Их нельзя переобъявить (declaration merging не работает), но можно создавать сложные композиции через & и |.

Пример:

TYPESCRIPT
// Интерфейс
interface User {
name: string;
age: number;
}
// Тип
type Status = 'active' | 'inactive';
type Admin = User & { role: 'admin' }; // пересечение

Когда что использовать:

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

  • Типы - для сложных комбинаций, условных типов, примитивов.

На практике разница часто стирается, но интерфейсы предпочтительнее для объектов из-за лучшей производительности компилятора и читаемости ошибок.

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

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