Sobes.tech
Назад к вопросам
Middle
2

В чём разница между interface и type в TypeScript? Что произойдёт, если объявить два интерфейса с одинаковым названием?

Компании, где спрашивали
Data World

Ответ от нейросети

sobes.tech AI

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

  • interface предназначен для описания структуры объектов и поддерживает декларативное объединение (declaration merging). Это значит, что если объявить два интерфейса с одинаковым именем, они автоматически объединятся в один интерфейс с объединёнными свойствами.

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

Пример объединения интерфейсов:

interface User {
  name: string;
}

interface User {
  age: number;
}

const user: User = {
  name: 'Alice',
  age: 30
};

Здесь два интерфейса User сливаются в один с двумя свойствами name и age. Если бы это были type, то компилятор выдал бы ошибку о повторном объявлении.