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