При слиянии одноимённых interface нет правила «последний тип побеждает»: одноимённые обычные свойства должны иметь совместимые, одинаково объявленные типы.
Как объединяются интерфейсы, если они содержат одинаковые ключи с разными типами?
При слиянии одноимённых interface нет правила «последний тип побеждает»: одноимённые обычные свойства должны иметь совместимые, одинаково объявленные типы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
При слиянии одноимённых interface нет правила «последний тип побеждает»: одноимённые обычные свойства должны иметь совместимые, одинаково объявленные типы.
Например, два объявления interface User { id: string } и interface User { id: number } вызывают ошибку TypeScript. Методам разрешены перегрузки с отдельными правилами совместимости. Пересечение типов — другая операция: {id: string} & {id: number} даёт практически невыполнимое свойство id: never. Если допустимы оба значения, нужно явно задать string | number в корректном контракте.