Pick
Pick<T, K> строит новый тип из части полей существующего: первым аргументом идёт исходный тип, вторым перечисление ключей, которые нужно взять.
Видеоуроки, интерактивный редактор и сохранение прогресса — бесплатно, сразу после входа.
ВойтиСоздать аккаунт — бесплатноPick<T, K> строит новый тип из части полей существующего: первым аргументом идёт исходный тип, вторым перечисление ключей, которые нужно взять.
type A = {
x: number;
y: number;
z: number;
};
type B = Pick<A, "x">; // { x: number }
type C = Pick<A, "x" | "y">; // { x: number; y: number }В задании тип превью не описан:
Сценарий житейский: в списке пользователей нужно показать только имя, а почта и возраст в превью не нужны и не должны туда попадать.
Обрати внимание на директиву @ts-expect-error: она требует, чтобы на следующей строке была ошибка. Пока UserPreview это any, поле email проходит без возражений, и компилятор жалуется на саму директиву как на лишнюю. Значит правильный тип обязан не только разрешить name, но и запретить email.
Подробнее: Pick — справочник TypeScript.
Опиши UserPreview как тип, содержащий из User только поле name. Тип User, объект preview и строку с @ts-expect-error менять не нужно.