Sygnatura indeksu

Opis obiektów o dowolnych kluczach i wartościach jednego typu.

Na tej stronie

Przykład

#
TypeScript
interface Scores {
  [student: string]: number
}

const scores: Scores = { ania: 92, kuba: 78 }
scores.ola = 85

const best = Object.entries(scores).sort(([, a], [, b]) => b - a)[0]
console.log(best)
Wynik
['ania', 92]

Definicja i zastosowanie

#

Sygnatura indeksu [key: string]: number opisuje obiekt, którego nazw pól nie znasz z góry, ale wiesz, jakiego typu są wartości. Tak wyglądają słowniki: punkty uczniów, liczniki wystąpień, tłumaczenia.

Klucz może być typu string, number albo symbol. Pola zadeklarowane obok sygnatury muszą mieć typ zgodny z nią, bo też są dostępne przez dowolny klucz.

Przy włączonej opcji noUncheckedIndexedAccess odczyt przez sygnaturę indeksu zwraca typ | undefined, co zmusza do obsługi brakujących kluczy. Do słowników ze znanymi kluczami wygodniejszy jest Record<K, V>.

Składnia

#
Składnia
interface Slownik {
  [key: string]: typ
}

Dobre praktyki

#
  • Gdy znasz listę kluczy, użyj Record<"html" | "css", number> zamiast ogólnej sygnatury.
  • Włącz noUncheckedIndexedAccess, żeby kompilator przypominał o kluczach, których może nie być.

Powiązane hasła

#

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