Partial
Partial<T> это встроенная утилита, которая берёт тип и делает все его поля необязательными. Она ничего не добавляет и не убирает, только снимает обязательность:
Онлайн-редактор кода, разбор решения и отметки о прогрессе доступны после входа.
ВойтиСоздать аккаунт — бесплатноPartial<T> это встроенная утилита, которая берёт тип и делает все его поля необязательными. Она ничего не добавляет и не убирает, только снимает обязательность:
type A = {
x: number;
y: number;
};
type B = Partial<A>; // { x?: number; y?: number }В задании тип для патча объявлен как копия исходного:
Компилятор ругается на patch: в типе User оба поля обязательные, а в объекте только email. По смыслу же патч это описание частичного изменения: «поменяй почту, остальное не трогай», и требовать в нём имя неправильно.
Дублировать User с вопросительными знаками руками не стоит: копия разъедется с оригиналом при первом же изменении. Для таких производных типов и существуют утилиты стандартной библиотеки.
Список всех утилит: Utility Types — справочник TypeScript.
Опиши UserPatch так, чтобы он повторял поля User, но все они были необязательными. Тип User и объект patch менять не нужно.