Typ Record w TypeScript wyjaśniony na Twoich własnych kluczach

Typ Record w TypeScript

TypeScript Record<K, V>: typowane obiekty słownikowe wyjaśnione | We.Inc

Zbuduj typ Record<K, V> z własnych kluczy i zobacz obiekt, który opisuje. Dowiedz się, kiedy Record wygrywa z index signature lub Map i jakie błędy wyłapuje.

Record<K, V> to wbudowany typ narzędziowy dla obiektu, którego klucze pochodzą z K, a wszystkie wartości mają typ V. Podaj mu unię literałów string, a kompilator wymusi obecność każdego wymienionego klucza. Podaj zwykły string, a zachowa się jak otwarty słownik, tak samo jak index signature.

Record w skrócie

Wpisz potrzebne klucze i wybierz typ wartości. Kreator zapisuje typ Record, zwykły typ obiektowy, do którego się rozwija, oraz obiekt startowy z jedną linią na klucz, abyś przed wklejeniem do kodu zobaczył dokładnie, czego będzie od Ciebie wymagał kompilator.

Najczęściej zadawane pytania

Czy Record to to samo co index signature?

Przy szerokim kluczu, takim jak string, tak: Record<string, number> i { [key: string]: number } opisują ten sam kształt. Różnicę widać przy kluczach literałowych. Index signature nie może wymagać istnienia konkretnych nazw, a Record<"a" | "b", number> wymaga zarówno a, jak i b.

Kiedy użyć Map zamiast Record?

Używaj Map, gdy klucze są często dodawane i usuwane, gdy klucze nie są stringami albo gdy potrzebujesz liczby wpisów przez size. Używaj Record dla stałego zestawu nazw, obiektów konfiguracyjnych i wszystkiego, co przepuszczasz przez JSON.stringify.

Dlaczego TypeScript mówi, że w moim Record brakuje właściwości?

Bo typ klucza jest unią, a obiekt pomija jeden z jej elementów. tsc zgłasza na przykład Property 'about' is missing in type '{ home: string; }'. Dodaj klucz albo opakuj typ w Partial, jeśli jego pominięcie jest poprawne.

Czy Record istnieje w runtime?

Nie. To wyłącznie typ i znika po kompilacji kodu. Obiekt, który tworzysz, to zwykły obiekt JavaScript, więc kompilator nie powstrzyma odpowiedzi serwera przed nadmiarowymi lub brakującymi kluczami.

W której wersji TypeScript dodano Record?

Record pojawił się w TypeScript 2.1, razem z Partial, Readonly i Pick, więc ma go każdy aktualny kompilator.

Jak zbudowany jest Record

Klucze zamknięte kontra klucze otwarte

Record, index signature czy Map

Wzorce, których użyjesz najczęściej

Klucze z tablicy as const

Tablica jest jedynym źródłem prawdy. Dodaj do niej status, a kompilator będzie wskazywał tabelę etykiet, dopóki nie dodasz też etykiety.

Jedna flaga na każde pole innego typu

keyof zamienia istniejący typ w unię kluczy, więc obiekt stanu touched formularza zawsze wymienia te same pola co formularz.

Otwarty słownik, bezpieczny odczyt

Przy włączonym noUncheckedIndexedAccess odczyt po wyliczonym kluczu ma typ number | undefined, więc wartość zastępcza jest wymagana, a nie zapominana.

Kreator typu Record

Klucze oddzielone przecinkami

Typ wartości

Klucze są opcjonalne (opakuj w Partial)

Typ

Do czego się rozwija

Obiekt startowy

Wpisz co najmniej jeden klucz. Klucze muszą zaczynać się od litery, _ lub $.

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony