Een index signature beschrijft het type van eigenschappen wanneer je hun namen van tevoren niet kent — modelleert dictionaries/maps waarbij sleutels dynamisch zijn.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
Een index signature beschrijft het type van eigenschappen wanneer je hun namen van tevoren niet kent — modelleert dictionaries/maps waarbij sleutels dynamisch zijn.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
Met een gewone index signature neemt de compiler aan dat elke sleutel bestaat, dus scores.typo wordt getypeerd als number hoewel het bij uitvoering eigenlijk undefined is. Het inschakelen van noUncheckedIndexedAccess lost dit op:
// 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 benoemde eigenschappen moeten toewijsbaar zijn aan het waardetype van de index signature.
type Scores = Record<string, number>; // same as the index signature
type Roles = Record<"admin" | "user", boolean>; // constrained keys
Record is de idiomatische afkorting en ondersteunt een beperkte sleutel-union, wat gewoon [key: string] niet kan.
Index signatures modelleren objecten met echt dynamische sleutels (opzoektabellen, caches, geparste JSON-maps).
Ken de veiligheidskaveat (noUncheckedIndexedAccess) en geef de voorkeur aan Record<K, V> voor leesbaarheid — en geef de voorkeur aan Map wanneer sleutels echt open zijn en je echte iteratie-/groottesemantiek wilt.
Een bibliotheek met IT-sollicitatievragen met gedetailleerde antwoorden — van Junior tot Senior.
Doneren