Sobes.tech
Назад к вопросам
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.