Вопросы собес Front
January 6, 2025

Отличия interface от type

В TypeScript interface и type используются для определения типов, но между ними есть несколько ключевых отличий:

1. Определение объектов:

• interface в первую очередь предназначен для описания структуры объектов. Он может быть расширен с помощью других интерфейсов.

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

2. Расширяемость:

• interface поддерживает наследование. Вы можете использовать ключевое слово extends, чтобы создать новый интерфейс на основе существующего.

• type не поддерживает наследование, но вы можете комбинировать типы с помощью объединений (|) и пересечений (&).

3. Декларация:

• Интерфейсы могут быть объявлены несколько раз с одинаковым именем, и TypeScript объединит их (декларативное объединение).

• Типы не могут быть объявлены несколько раз с одинаковым именем. Если вы попытаетесь это сделать, TypeScript выдаст ошибку.

4. Использование:

• В большинстве случаев вы можете использовать interface или type взаимозаменяемо для описания объектов. Однако если вам нужно определить сложные типы (например, объединения), лучше использовать type.

Примеры

Interface:

interface Person {

name: string;

age: number;

}

interface Employee extends Person {

employeeId: number;

}

Type:

type Person = {

name: string;

age: number;

};

type Employee = Person & {

employeeId: number;

};

Заключение

Выбор между interface и type часто зависит от предпочтений разработчика и конкретных требований проекта. В целом, если вам нужно описывать структуры объектов и использовать наследование, лучше использовать interface. Если вам нужно более сложное определение типа, то стоит использовать type.