Sobes.tech
Middle+

/* Napište typ MyRequired — činí všechny volitelné pole povinnými */ 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 AI

Odpověď od AI

Typ MyRequired<T> lze implementovat pomocí mapped types v TypeScriptu odstraněním modifikátoru ? ze všech vlastností typu T. To se provádí pomocí operátoru -? před klíčem vlastnosti:

// Odstraňujeme volitelnost ze všech vlastností

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

// Příklad použití

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

const user1: MyRequired<User> = { id: 1, name: "John" } // správně
const user2: MyRequired<User> = { id: 1 } // chyba, chybí povinné pole name