Kształty obiektów
Pick
Zachowuje tylko wymienione klucze i sprawdza, że istnieją.
Czym jest
Typ mapowany po `K`, a nie po `keyof T`, i dlatego wynikiem jest zwykły obiekt, a nie kopia oryginału. Ograniczenie `K extends keyof T` naprawdę pracuje: wybierz klucz, którego nie ma, a błąd pojawi się przy typie, a nie później przy dostępie do właściwości.
Przykłady
Pick<{ a: string; b: number }, 'a'>→{ a: string; }Pick<{ a: string; b: number; c: boolean }, 'a' | 'c'>→{ a: string; c: boolean; }Pick<{ readonly a: string }, 'a'>→{ readonly a: string; }`readonly` zostaje przeniesione, bo `Pick` mapuje po zbiorze kluczy wywiedzionym z `T`.
Każdy rozwinięty typ powyżej wypisał TypeScript 5.9.3, nie ręka człowieka.
Czego nie robi
- Nie przyjmuje kluczy, których nie ma. To zaleta i to właśnie różni `Pick` od `Omit` — ten drugi przyjmuje cokolwiek.
- Nie dystrybuuje się po unii w `T`. `Pick<A | B, K>` wybiera z unii jak z jednej całości, a nie z każdego składnika.
Wniosek
Gdy chcesz podzbiór i chcesz wiedzieć o literówkach, `Pick` jest tym z barierką.