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

Взаимоисключающие пропсы

Вопрос

Каким приёмом описать компонент, у которого либо href, либо onClick, но не оба сразу?

type Props =
  | { href: string; onClick?: never }
  | { onClick: () => void; href?: never };

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

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

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

Коротко

Правильный тип: union. Ответ Почему так Union вариантов плюс ?: never на чужом поле делает недопустимую комбинацию ошибкой компиляции.

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

union

Разбор

Ответ

union

Почему так

Union вариантов плюс ?: never на чужом поле делает недопустимую комбинацию ошибкой компиляции. Так типизируют компоненты, которые ведут себя то как ссылка, то как кнопка.

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

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