Sobes.tech
Middle+

/* 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

/* Write the type MyReadonly - makes all fields… - sobes.tech