Выбор ответа Junior Базовые типы спрашивают часто обновлено
Два interface с одним именем
Вопрос
Что будет?
interface A { x: number }
interface A { y: string }
const a: A = { x: 1 };
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Ошибка: в объекте нет поля y. Объявления interface с одним именем в одной области сливаются (declaration merging): A получает оба поля, x и y.
Варианты ответа
- Компилируется: поля из второго объявления необязательны
- Компилируется: второе объявление заменяет первое
- Ошибка: дублирующийся идентификатор
A - Ошибка: в объекте нет поля
yправильный ответ
Разбор
Объявления interface с одним именем в одной области сливаются (declaration merging): A получает оба поля, x и y. Объект без y под такой тип не подходит.
Ошибка «дублирующийся идентификатор» была бы у двух type A. Замены нет, а поля из второго объявления остаются обязательными.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.