Przejdź do treści
webtype.orgwebtype.org

    ↑↓ 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 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 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.