Вопрос проверяет знание механизма declaration merging в TypeScript.
Декларативное слияние интерфейсов — это возможность TypeScript объединять несколько объявлений одного интерфейса в один. Все поля из разных объявлений автоматически собираются вместе. Это используется для расширения типов без их переписывания. Чаще всего применяется при работе с библиотеками и глобальными типами.
Declaration merging — это механизм TypeScript, при котором несколько объявлений с одинаковым именем объединяются в один тип.
interface User {
id: number;
}
interface User {
name: string;
}
Результат:
User имеет поля id и name
Расширение типов сторонних библиотек
Добавление полей в глобальные интерфейсы
Описание API, которое “наращивается” по частям
Работает только с interface
type так объединять нельзя
Конфликтующие типы приведут к ошибке
interface Window {
myAppVersion: string;
}
Декларативное слияние интерфейсов позволяет аккуратно расширять типы без изменения исходного кода и является важной частью экосистемы TypeScript.