Напиши тип Senior Утилитарные типы обновлено

Расширение с заменой поля

Вопрос

Тип, у которого поля Button, но onClick заменён на свой обработчик.

type ButtonProps = { onClick: (e: MouseEvent) => void; label: string };
type MyProps = /* ? */;

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

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

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

Коротко

Правильный тип: Omit<ButtonProps, 'onClick'> & { onClick: () => void }. Ответ Почему так Omit + пересечение - стандартный приём сужения чужого API.

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

Omit<ButtonProps, 'onClick'> & { onClick: () => void }

Разбор

Ответ

Omit<ButtonProps, 'onClick'> & { onClick: () => void }

Почему так

Omit + пересечение - стандартный приём сужения чужого API. Простое пересечение без Omit дало бы несовместимые сигнатуры, и вызвать onClick стало бы невозможно.

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

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