Partial, Pick, Omit, Record — do czego służą?
Najpierw odpowiedz na głos lub w myślach, potem porównaj.
Odpowiedź
Utility types tworzą nowe typy na podstawie istniejących, ograniczając powielanie deklaracji.
TypeScript
type User = { id: string; name: string; email: string };
type UserPatch = Partial<Pick<User, 'name' | 'email'>>;
type PublicUser = Omit<User, 'email'>;
type UsersById = Record<string, User>;Partial czyni pola opcjonalnymi; Pick wybiera pola; Omit je pomija; Record opisuje mapowanie kluczy na wartości.
Pułapka: Omit nie usuwa danych z rzeczywistego obiektu. Jeżeli nie chcę wysłać emaila do klienta, tworzę odpowiedni obiekt odpowiedzi. Przy mapie nie gwarantuję, że dowolny klucz istnieje — warto uwzględnić undefined i noUncheckedIndexedAccess.
Jak poszło? Bądź szczery — „Jeszcze nie” dodaje pytanie do powtórki.