Przejdź do treści

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    Operatory

    T[K]

    Odczytuje typ właściwości z typu obiektu.

    Czym jest

    Druga połowa `keyof`. Przyjmuje typ klucza — nie *nazwę* klucza, tylko typ — i dlatego można mu podać unię, a on odpowie unią. Ten jeden fakt sprawia, że `T[keyof T]` znaczy „wszystkie typy wartości” bez żadnej iteracji.

    Przykłady

    • User['id']
      number
    • User['id' | 'name']
      string | number
    • User[keyof User]
      string | number | boolean

      Wszystkie typy wartości naraz — i powód, dla którego prawie nigdy nie trzeba iterować, by je zebrać.

    Każdy rozwinięty typ powyżej wypisał TypeScript 5.9.3, nie ręka człowieka.

    Czego nie robi

    • Nie używa notacji z kropką. `User.id` nie jest typem — dostęp indeksowany zapisuje się zawsze nawiasami i *typem* klucza, więc `User["id"]` w cudzysłowie.
    • Nie toleruje klucza, którego nie potrafi zweryfikować. Indeksowanie nieograniczonym parametrem typu to TS2536, a naprawą jest ograniczenie, nie rzutowanie.

    Wniosek

    `T[number]` na krotce albo tablicy daje typ elementu — ta sama sztuczka zastosowana do liczbowego zbioru kluczy. To najprzydatniejszy dostęp indeksowany, jaki istnieje.