Operatory
keyof
Unia kluczy typu.
Czym jest
Jeden z dwóch operatorów, z których zbudowane jest każde przekształcenie obiektu — `keyof` wyciąga klucze, dostęp indeksowany odczytuje wartości. Wynikiem jest unia typów literalnych w nieokreślonej kolejności i celowo nie da się poprosić o „pierwszy klucz”: kolejność nie jest tym, co typ obiektu gwarantuje.
Przykłady
keyof User→keyof Userkeyof { a: 1 }→"a"keyof string[]
→keyof string[]Tablica ma jako klucze wszystkie metody tablicy plus `number`. Rzadko o to chodzi — chodzi o `T[number]`.
Każdy rozwinięty typ powyżej wypisał TypeScript 5.9.3, nie ręka człowieka.
Czego nie robi
- Nie daje uporządkowanej listy. Kolejność kluczy obiektu nie jest częścią typu, więc nic nie może na niej polegać.
- Nie pomija składowych dziedziczonych ani wbudowanych. `keyof` tablicy albo instancji klasy obejmuje wszystko, co typ deklaruje, razem z metodami.
Wniosek
Sięgaj po `keyof T`, gdy chcesz nazwy, i po `T[keyof T]`, gdy chcesz wartości. Niemal każdy typ mapowany zaczyna się od jednego z tych dwóch.