ఇండెక్స్ సిగ్నేచర్ అంటే మీరు ఆస్తుల నામలను ముందుగా తెలుసుకోకపోయినప్పుడు వాటి రకాన్ని వివరిస్తుంది — డైనమిక్ కీలతో నిఘంటువులు/మ్యాప్లను మోడలింగ్ చేస్తుంది.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
ఇండెక్స్ సిగ్నేచర్ అంటే మీరు ఆస్తుల నામలను ముందుగా తెలుసుకోకపోయినప్పుడు వాటి రకాన్ని వివరిస్తుంది — డైనమిక్ కీలతో నిఘంటువులు/మ్యాప్లను మోడలింగ్ చేస్తుంది.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
సాధారణ ఇండెక్స్ సిగ్నేచర్తో, కంపైలర్ ప్రతి కీ ఉందని ఆశ్చర్యపోతుంది, కాబట్టి scores.typo సంఖ్యగా టైప్ చేయబడుతుంది, అది రানటైమ్లో నిజానికి undefined అయినప్పటికీ. noUncheckedIndexedAccess చేతనం చేయడం దీన్ని సరిచేస్తుంది:
// 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
}
సभी పేర్కొన్న లక్షణాలు ఇండెక్స్ సిగ్నేచర్ యొక్క విలువ రకానికి నిర్దేశించదగినవిగా ఉండాలి.
type Scores = Record<string, number>; // same as the index signature
type Roles = Record<"admin" | "user", boolean>; // constrained keys
Record ఇడియమాటిక్ సంక్షిప్త రూపం మరియు నిర్బంధ కీ యూనియన్కు మద్దతిస్తుంది, ఇది సాధారణ [key: string] చేయలేదు.
ఇండెక్స్ సిగ్నేచర్లు నిజమైన డైనమిక్-కీలుగా ఉన్న ఆబ్జెక్టులను (లుకప్ టేబిల్లు, కాష్లు, పార్స్ చేసిన JSON మ్యాప్లు) మోడలింగ్ చేస్తాయి.
భద్రతా హెచ్చరికను తెలుసుకోండి (noUncheckedIndexedAccess) మరియు పఠనీయతకు Record<K, V> కోసం ఉత్తమ — మరియు కీలు సත్యమైనవిగా తెరిచి ఉన్నప్పుడు మరియు మీరు నిజమైన iteration/సైజ్ సెమాంటిక్ల కోసం Map కోసం ఉత్తమ.