Przejdź do treści
Wyciągnij typowaną właściwość z obiektów

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    Wzorce

    Jak wybrać jedną właściwość z każdego obiektu i zachować jej typ w zwracanej tablicy?

    Zwiąż klucz z `keyof T` i użyj dostępu indeksowanego dla elementu wyniku.

    Przepis

    function pluck<T, K extends keyof T>(
      items: readonly T[],
      key: K,
    ): T[K][] {
      return items.map(item => item[key])
    }
    
    const people = [
      { id: 1, name: 'Ada' },
      { id: 2, name: 'Lin' },
    ]
    
    const names = pluck(people, 'name')
    const ids = pluck(people, 'id')

    Build to kompiluje i sprawdza każdy wynik poniżej.

    Jak to działa

    1. 01
      K extends keyof T

      Wybrana właściwość musi istnieć na każdym elemencie opisanym przez `T`.

    2. 02
      T[K][]

      Wybrany klucz określa typ elementu zwracanej tablicy.

    Co dostajesz

    Gdzie to zawodzi

    Dla unii obiektów o różnych kształtach `keyof T` zawiera tylko klucze bezpieczne dla każdego składnika. Najpierw zawęź unię albo zamodeluj dyskryminowaną operację dla kluczy właściwych gałęziom.

    Wniosek

    Koreluj parametr klucza z `T[K]`, gdy wybór właściwości określa typ wyniku.

    Zobacz też

    Wzorce