Задача

Реализовать самостоятельно встроенные утилитные типы: MyPartial<T>, MyRequired<T>, MyReadonly<T>, MyPick<T, K>, MyOmit<T, K>.

Пример

type User = { id: number; name: string; email: string };
 
type A = MyPartial<User>; // { id?: number; name?: string; email?: string }
type B = MyReadonly<User>; // { readonly id: number; ... }
type C = MyPick<User, 'id' | 'name'>; // { id: number; name: string }
type D = MyOmit<User, 'email'>; // { id: number; name: string }

Решение

См. также