Напиши тип Middle Объединения и сужение обновлено
Дискриминированное объединение
Вопрос
По какому полю TypeScript сузит тип в switch, если у вариантов есть общее литеральное поле?
type Shape =
| { kind: 'circle'; r: number }
| { kind: 'square'; a: number };
Попробуйте сами
Напишите тип, как написали бы в коде.
Показать ответ и разбор
Коротко
Правильный тип: kind. Ответ Почему так Дискриминатор - общее поле с литеральным типом. switch по нему даёт исчерпывающее сужение, а ветка default с const : never = shape ловит забытые варианты на этапе компиляции.
Правильный тип
kind
Разбор
Ответ
kind
Почему так
Дискриминатор - общее поле с литеральным типом. switch по нему даёт исчерпывающее сужение, а ветка default с const _: never = shape ловит забытые варианты на этапе компиляции.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.