Record<Keys, Type>

Tworzy typ obiektu o podanych kluczach, w którym każda wartość ma ten sam typ.

Na tej stronie

Przykład

#
TypeScript
type Course = 'html' | 'javascript' | 'python'

const modules: Record<Course, number> = {
  html: 11,
  javascript: 16,
  python: 12
}

const total = Object.values(modules).reduce((sum, n) => sum + n, 0)
console.log(total)
Wynik
39

Definicja i zastosowanie

#

Record<Keys, Type> opisuje obiekt, którego klucze należą do typu Keys, a wszystkie wartości mają typ Type. Record<string, number> to słownik liczb, a Record<"html" | "css", number> obiekt z dokładnie dwoma polami.

Przy unii literałów jako kluczach kompilator wymaga wszystkich pól. Jeśli dodasz nowy wariant do unii, każdy Record z tą unią zgłosi brakujące pole, co pomaga utrzymać spójność.

To czytelniejsza alternatywa dla sygnatury indeksu { [key: string]: T } i podstawowy typ dla map konfiguracji, tłumaczeń czy liczników.

Składnia

#
Składnia
type Nowy = Record<Klucze, TypWartosci>

Parametry typu

#
  • Keys

    string, number, symbol lub unia literałów

    Dozwolone klucze.
  • Type

    dowolny typ

    Typ każdej wartości.

Więcej przykładów

#
Brakujący klucz
TypeScript
const labels: Record<Course, string> = { html: 'HTML i CSS', python: 'Python' }
// Błąd: Property 'javascript' is missing in type '{ html: string; python: string; }'.

Dobre praktyki

#
  • Przy kluczach z unii literałów Record pilnuje kompletności. To świetne przy mapach etykiet i kolorów.
  • Do słowników z nieznanymi kluczami rozważ Map, która lepiej obsługuje częste dodawanie i usuwanie.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.