Sobes.tech
Middle+

/* Napišite tip MyRequired — čini sva opcionalna polja obaveznim */ type User = { id?: number name?: string } type MyRequired<T> = { } const user1: MyRequired<User> = { id: 1, name: "John" } const user2: MyRequired<User> = { id: 1 }

sobes.tech АИ

Одговор од АИ

Tip MyRequired<T> može se implementirati pomoću mapped types u TypeScript-u, uklanjanjem modifikatora ? sa svih svojstava T. To se radi pomoću operatora -? pre ključa svojstva:

// Uklanjamo opcionalnost sa svih svojstava

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

// Primer upotrebe

type User = {
  id?: number
  name?: string
}

const user1: MyRequired<User> = { id: 1, name: "John" } // ispravno
const user2: MyRequired<User> = { id: 1 } // greška, nedostaje obavezno polje name