ઇન્ડેક્સ સિગ્નેચર એ ગુણધર્મોના પ્રકારનું વર્ણન કરે છે જ્યારે તમે તેમના નામો આગળથી જાણતા નથી — શબ્દકોશ/નકશાને મોડેલ કરે છે જ્યાં કી ગતિશીલ હોય છે.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
ઇન્ડેક્સ સિગ્નેચર એ ગુણધર્મોના પ્રકારનું વર્ણન કરે છે જ્યારે તમે તેમના નામો આગળથી જાણતા નથી — શબ્દકોશ/નકશાને મોડેલ કરે છે જ્યાં કી ગતિશીલ હોય છે.
{
[: ]: ;
}
: = { : , : };
scores. = ;
scores.;
scores.;
સાદા ઇન્ડેક્સ સિગ્નેચર સાથે, કમ્પાઇલર ધારે છે કે દરેક કી અસ્તિત્વમાં છે, તેથી scores.typo એ number તરીકે ટાઇપ કરવામાં આવે છે તદ્દન જો તે વાસ્તવમાં રનટાઇમ પર 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> પ્રાધાન્ય આપો — અને જ્યારે કીઓ સાચવાય તેવી છે અને તમે વાસ્તવિક પુનરાવર્તન/કદ સેમેન્ટિક્સ ઇચ્છો ત્યારે Map પ્રાધાન્ય આપો.