Выбор ответа Senior Объединения и сужение обновлено
Проверка полноты без assertNever
Вопрос
Какой вариант в default гарантирует ошибку компиляции, если в union добавили вариант и забыли ветку?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: default: return action satisfies never;. action satisfies never проверяет, что оставшийся тип присваиваем never, то есть все варианты обработаны, и при новом варианте будет ошибка. as never это утверждение, оно заставляет компилятор замолчать и полноту не проверяет.
Варианты ответа
default: return action satisfies never;правильный ответdefault: return action as never;default: return undefined as unknown as never;default: break;
Разбор
action satisfies never проверяет, что оставшийся тип присваиваем never, то есть все варианты обработаны, и при новом варианте будет ошибка. as never это утверждение, оно заставляет компилятор замолчать и полноту не проверяет. Двойное приведение тоже ничего не проверяет. break просто выходит из switch.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.