Middle+
/* Napisz typ MyRequired — sprawia, że wszystkie opcjonalne pola są obowiązkowe */ 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
Odpowiedź od AI
Typ MyRequired<T> można zaimplementować za pomocą mapped types w TypeScript, usuwając modyfikator ? ze wszystkich właściwości typu T. Robi się to za pomocą operatora -? przed kluczem właściwości:
// Usuwamy opcjonalność ze wszystkich właściwości
type MyRequired<T> = {
[P in keyof T]-?: T[P]
}
// Przykład użycia
type User = {
id?: number
name?: string
}
const user1: MyRequired<User> = { id: 1, name: "John" } // poprawnie
const user2: MyRequired<User> = { id: 1 } // błąd, brakuje obowiązkowego pola name