Выбор ответа Junior Базовые типы спрашивают часто обновлено

Два interface с одним именем

Вопрос

Что будет?

interface A { x: number }
interface A { y: string }

const a: A = { x: 1 };

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Ошибка: в объекте нет поля y. Объявления interface с одним именем в одной области сливаются (declaration merging): A получает оба поля, x и y.

Варианты ответа

  1. Компилируется: поля из второго объявления необязательны
  2. Компилируется: второе объявление заменяет первое
  3. Ошибка: дублирующийся идентификатор A
  4. Ошибка: в объекте нет поля yправильный ответ

Разбор

Объявления interface с одним именем в одной области сливаются (declaration merging): A получает оба поля, x и y. Объект без y под такой тип не подходит.

Ошибка «дублирующийся идентификатор» была бы у двух type A. Замены нет, а поля из второго объявления остаются обязательными.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.