Выбор ответа Senior Условные и mapped-типы обновлено

Проверка на never

Вопрос

Какой тип у R?

type IsNever<T> = T extends never ? true : false;
type R = IsNever<never>;

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

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

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

Коротко

Правильный ответ: never. never это пустое объединение.

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

  1. neverправильный ответ
  2. boolean
  3. true
  4. false

Разбор

never это пустое объединение. Дистрибутивный условный тип применяется к каждому члену объединения, а членов ноль, поэтому результат тоже пустое объединение: never. Ветки true и false даже не вычисляются.

Правильная проверка отключает распределение: type IsNever<T> = [T] extends [never] ? true : false, она даёт true.

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

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