Przejdź do treści

    ↑↓ 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 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ą.