Një nënshkrim indeksi përshkruan llojin e vetive kur nuk i njihni emrat e tyre paraprakisht — modelon fjalorë/harta ku çelësat janë dinamikë.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
Një nënshkrim indeksi përshkruan llojin e vetive kur nuk i njihni emrat e tyre paraprakisht — modelon fjalorë/harta ku çelësat janë dinamikë.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
Me një nënshkrim indeksi të thjeshtë, përpiluesi supozon se çdo çelës ekziston, kështu që scores.typo është i shënuar si number edhe nëse në realitet është undefined gjatë ekzekutimit. Aktivizimi i noUncheckedIndexedAccess e rregullon këtë:
// 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
}
Të gjitha vetitë e emëruara duhet të jenë të caktueshme për llojin e vlerës të nënshkrimit të indeksit.
type Scores = Record<string, number>; // same as the index signature
type Roles = Record<"admin" | "user", boolean>; // constrained keys
Record është shkurtesa idiomatike dhe suporton një bashkim të çelësave të kufizuara, të cilin një [key: string] i thjeshtë nuk mund të bëjë.
Nënshkrimet e indeksit modelojnë objekte me çelësa vërtet dinamikë (tabela kërkimi, memorie cache, harta JSON të analizuara).
Dini paralajmërimin e sigurisë (noUncheckedIndexedAccess) dhe preferojnë Record<K, V> për lexueshmëri — dhe preferojnë një Map kur çelësat janë vërtet të hapur dhe dëshironi semantikën e vërtetë të përsëritjes/madhësisë.