ਇੱਕ ਇੰਡੈਕਸ ਸਿਗਨੇਚਰ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੀ ਕਿਸਮ ਦਾ ਵਰਣਨ ਕਰਦਾ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਉਹਨਾਂ ਦੇ ਨਾਮ ਪਹਿਲਾਂ ਤੋਂ ਨਹੀਂ ਜਾਣਦੇ — ਸ਼ਬਦਕੋਸ਼ਾਂ/ਮੈਪਸ ਨੂੰ ਮਾਡਲ ਕਰਦਾ ਹੈ ਜਿੱਥੇ ਚਾਬੀਆਂ ਗਤੀਸ਼ੀਲ ਹਨ।
{
[: ]: ;
}
: = { : , : };
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 ਨੂੰ ਤਰਜੀਹ ਦਿਓ।