Sobes.tech
Back to questions
Middle+
1

/* Напишите тип MyReadonly - делает все поля только для чтения */ type User = { id: number name: string } type MyReadonly<T> = any const user: MyReadonly<User> = { id: 1, name: "John" } user.name = "Jane" /* Напишите тип MyRequired — делает все опциональные поля обязательными */ type User = { id?: number name?: string } type MyRequired<T> = { } const user1: MyRequired<User> = { id: 1, name: "John" } const user2: MyRequired<User> = { id: 1 } /* Напишите тип MyPartial — делает все опциональные поля обязательными */ type User = { id: number name: string } type MyPartial<T> = { } const user1: MyRequired<User> = { id: 1, name: "John" } const user2: MyRequired<User> = { id: 1 }

Companies where asked
М.Видео/эльдорадо

Answer from AI

sobes.tech AI

typescript // MyReadonly - делает все поля типа T только для чтения // Используется mapped types с модификатором readonly

type MyReadonly<T> = { readonly [P in keyof T]: T[P] }

// Пример использования: // const user: MyReadonly<User> = { id: 1, name: "John" } // user.name = "Jane"; // Ошибка, поле только для чтения

// MyRequired - делает все опциональные поля обязательными // Используем mapped types с модификатором -? для удаления optional

type MyRequired<T> = { [P in keyof T]-?: T[P] }

// Пример: // type User = { id?: number; name?: string } // const user1: MyRequired<User> = { id: 1, name: "John" } // ОК // const user2: MyRequired<User> = { id: 1 } // Ошибка, name обязательное

// MyPartial - делает все поля опциональными // Используем mapped types с модификатором ?

type MyPartial<T> = { [P in keyof T]?: T[P] }

// Пример: // type User = { id: number; name: string } // const user1: MyPartial<User> = { id: 1 } // ОК // const user2: MyPartial<User> = {} // ОК