Что будет, если создать два интерфейса с одинаковым именем в одном файле

«Что будет, если создать два интерфейса с одинаковым именем в одном файле» — вопрос из категории TypeScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

TypeScript автоматически объединит (merge) оба интерфейса в один. Все свойства из обоих интерфейсов станут доступны в результирующем типе. Это называется "declaration merging".

Пример:

interface User {
  name: string;
}

interface User {
  age: number;
}

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

Важно:

  • Объединение работает только для интерфейсов, не для типов (type)
  • Если свойства совпадают, их типы должны быть идентичны
  • Можно объединять интерфейсы даже из разных файлов (при использовании модулей)