Przejdź do treści
webtype.orgwebtype.org

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    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 6.0.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ą.