En index signature beskriver typen af egenskaber, når du ikke på forhånd kender deres navne — modellering af ordbøger/kort hvor nøgler er dynamiske.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
En index signature beskriver typen af egenskaber, når du ikke på forhånd kender deres navne — modellering af ordbøger/kort hvor nøgler er dynamiske.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
Med en almindelig index signature antager compileren, at hver nøgle eksisterer, så scores.typo bliver typet som number selv hvis det faktisk er undefined på kørselstid. Aktivering af noUncheckedIndexedAccess retter dette:
// with noUncheckedIndexedAccess: true
scores.math; // number | undefined → forces you to handle the missing case
interface Config {
name: string; // known property
[key: string]: string | number; // plus arbitrary extra keys
}
Alle navngivne egenskaber skal kunne tildeles index signatures værditype.
type Scores = Record<string, number>; // same as the index signature
type Roles = Record<"admin" | "user", boolean>; // constrained keys
Record er den idiomatiske forkortelse og understøtter en begrænset nøgleunion, som en simpel [key: string] ikke kan.
Index signatures modellerer genuint dynamisk-nøglede objekter (opslagningstabeller, cacheminne, parsede JSON-kort).
Kend sikkerhedsadvarslen (noUncheckedIndexedAccess) og foretrække Record<K, V> for læselighed — og foretrække en Map når nøgler er åbne og du ønsker rigtig iterations-/størrelsessemantik.