/* Write the type MyReadonly - makes all fields readonly */ type User = { id: number name: string } type MyReadonly<T> = any const user: MyReadonly<User> = { id: 1, name: "John" } user.name = "Jane" /* Write the type MyRequired — makes all optional fields required */ type User = { id?: number name?: string } type MyRequired<T> = { } const user1: MyRequired<User> = { id: 1, name: "John" } const user2: MyRequired<User> = { id: 1 } /* Write the type MyPartial — makes all optional fields required */ 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 AI
Answer from AI
typescript // MyReadonly - makes all fields of type T readonly // Uses mapped types with the readonly modifier
type MyReadonly<T> = { readonly [P in keyof T]: T[P] }
// Example usage: // const user: MyReadonly<User> = { id: 1, name: "John" } // user.name = "Jane"; // Error, field is readonly
// MyRequired - makes all optional fields required // Uses mapped types with the -? modifier to remove optional
type MyRequired<T> = { [P in keyof T]-?: T[P] }
// Example: // type User = { id?: number; name?: string } // const user1: MyRequired<User> = { id: 1, name: "John" } // OK // const user2: MyRequired<User> = { id: 1 } // Error, name is required
// MyPartial - makes all fields optional // Uses mapped types with the ? modifier
type MyPartial<T> = { [P in keyof T]?: T[P] }
// Example: // type User = { id: number; name: string } // const user1: MyPartial<User> = { id: 1 } // OK // const user2: MyPartial<User> = {} // OK