Indekso parašas aprašo savybių tipą, kai iš anksto nežinote jų vardų — modeliuoja žodynus/žemėlapius, kur raktai yra dinaminiai.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
Indekso parašas aprašo savybių tipą, kai iš anksto nežinote jų vardų — modeliuoja žodynus/žemėlapius, kur raktai yra dinaminiai.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
Su paprastuoju indekso parašu, kompiliatorius daro prielaidą, kad kiekvienas raktas egzistuoja, todėl scores.typo yra vertinamas kaip number net jei vykdymo metu tai iš tikrųjų undefined. noUncheckedIndexedAccess įjungimas tai pataisys:
// 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
}
Visos pavadintosios savybės turi būti priskirtos indekso parašo reikšmės tipui.
type Scores = Record<string, number>; // same as the index signature
type Roles = Record<"admin" | "user", boolean>; // constrained keys
Record yra idiomine santrumpa ir palaiko apribotą raktų sąjungą, kurią negali [key: string].
Indekso parašai modeliuoja tikrai dinaminiais raktais pagrįstus objektus (peržvalgos lenteles, podėlius, analizuotus JSON žemėlapius).
Žinokite saugumo įspėjimą (noUncheckedIndexedAccess) ir pirmenybę teikite Record<K, V> skaitomumui — ir pirmenybę teikite Map kai raktai yra visiškai atversti ir norite tikros iteracijos/dydžio semantikos.