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

Исчерпывающая проверка в функции

Вопрос

Какой тип должен быть у параметра функции-заглушки, чтобы компилятор ловил необработанные варианты union?

function assertNever(x: /* ? */): never {
  throw new Error('необработанный вариант: ' + x);
}

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

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

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

Коротко

Правильный тип: never. Ответ Почему так Вызов assertNever(value) в ветке default компилируется, только если все варианты разобраны выше.

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

never

Разбор

Ответ

never

Почему так

Вызов assertNever(value) в ветке default компилируется, только если все варианты разобраны выше. Функция вместо переменной удобнее: и проверка, и осмысленная ошибка в рантайме.

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

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