Kształty obiektów
Record
Buduje typ obiektu ze zbioru kluczy i jednego typu wartości.
Czym jest
Konstruktor tam, gdzie Pick jest selektorem. Z unii kluczy i typu wartości tworzy obiekt o tych kluczach, a dla string tworzy zamiast tego sygnaturę indeksu. Te dwa zachowania wyglądają podobnie i podobne nie są: jedno to ustalony kształt, drugie to słownik.
Przykłady
Record<'a' | 'b', number>→{ a: number; b: number; }Record<string, number>→{ [x: string]: number; }Sygnatura indeksu, nie ustalony kształt — każdy klucz jest dozwolony i żaden gwarantowany.
Record<'id', string>→{ id: string; }
Każdy rozwinięty typ powyżej wypisał TypeScript 6.0.3, nie ręka człowieka.
Czego nie robi
- Nie obiecuje, że klucze istnieją w czasie wykonania.
Record<string, number>bez oporu pozwoli odczytać klucz, którego nigdy nie ustawiono, i poda dla niegonumber. - Nie różnicuje wartości per klucz. Gdy każdy klucz potrzebuje własnego typu wartości, chcesz typu mapowanego z
as, a nieRecord.
Wniosek
Literalna unia kluczy daje kształt, który kompilator sprawdzi. string daje słownik, którego nie sprawdzi. Wybieraj świadomie.

