En indekssignatur beskriver typen av egenskaper når du ikke kjenner navnene deres på forhånd — modellerer ordlister/kart der nøkler er dynamiske.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
En indekssignatur beskriver typen av egenskaper når du ikke kjenner navnene deres på forhånd — modellerer ordlister/kart der nøkler er dynamiske.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
Med en vanlig indekssignatur antar kompilatoren at hver nøkkel eksisterer, så scores.typo er skrevet som number selv om det faktisk er undefined under kjøring. Aktivering av noUncheckedIndexedAccess fikser 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 navngitte egenskaper må kunne tilordnes til indekssignaturens verditype.
type Scores = Record<string, number>; // same as the index signature
type Roles = Record<"admin" | "user", boolean>; // constrained keys
Record er den idiomatiske snarveien og støtter en begrenset nøkkelunion, som en vanlig [key: string] ikke kan.
Indekssignaturer modellerer genuint dynamisk-tastede objekter (oppslagstabeller, hurtigminne, analyserte JSON-kart).
Kjenn til sikkerhetskaveatet (noUncheckedIndexedAccess) og foretrekk Record<K, V> for lesbarhet — og foretrekk en Map når nøkler er virkelig åpne og du vil ha reell iterasjons-/størrelsessemantikk.