Przejdź do treści

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    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 5.9.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 niego `number`.
    • Nie różnicuje wartości per klucz. Gdy każdy klucz potrzebuje własnego typu wartości, chcesz typu mapowanego z `as`, a nie `Record`.

    Wniosek

    Literalna unia kluczy daje kształt, który kompilator sprawdzi. `string` daje słownik, którego nie sprawdzi. Wybieraj świadomie.