/* Напишите тип 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 }
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> = {} // ОК