Напиши тип Middle Объединения и сужение обновлено

Сужение через равенство

Вопрос

Какой тип у x внутри if? Впишите тип.

function f(x: string | number, y: string | boolean) {
  if (x === y) {
    x; // x: /* ? */
  }
}

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

Напишите тип, как написали бы в коде.

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

Коротко

Правильный тип: string. Строгое равенство возможно, только если у x и y совпадает тип.

Правильный тип

string

Разбор

Строгое равенство возможно, только если у x и y совпадает тип. Общий член двух объединений один: string. Поэтому внутри if и x, и y сужены до string.

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

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