TypeScriptTypy narzędziowe
Record<Keys, Type>
Tworzy typ obiektu o podanych kluczach, w którym każda wartość ma ten sam typ.
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
#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
Recordpilnuje 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.