/* MyReadonly türünü yazın - tüm alanları yalnızca okunabilir yapar */ type User = { id: number name: string } type MyReadonly<T> = any const user: MyReadonly<User> = { id: 1, name: "John" } user.name = "Jane" /* MyRequired türünü yazın — tüm isteğe bağlı alanları zorunlu yapar */ type User = { id?: number name?: string } type MyRequired<T> = { } const user1: MyRequired<User> = { id: 1, name: "John" } const user2: MyRequired<User> = { id: 1 } /* MyPartial türünü yazın — tüm isteğe bağlı alanları zorunlu yapar */ type User = { id: number name: string } type MyPartial<T> = { } const user1: MyRequired<User> = { id: 1, name: "John" } const user2: MyRequired<User> = { id: 1 }
sobes.tech yapay zeka
AI'dan gelen yanıt
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> = {} // ОК