$lang['tuto'] = "ਟਿ utorial ਟੋਰਿਅਲਸ"; ?> ਵਿਚਕਾਰ ਅੰਤਰ ਨੂੰ ਸਮਝਣਾ!

ਵਿਚਕਾਰ ਅੰਤਰ ਨੂੰ ਸਮਝਣਾ! ਅਤੇ ? TypeScript ਵਿੱਚ ਓਪਰੇਟਰ

Temp mail SuperHeros
ਵਿਚਕਾਰ ਅੰਤਰ ਨੂੰ ਸਮਝਣਾ! ਅਤੇ ? TypeScript ਵਿੱਚ ਓਪਰੇਟਰ
ਵਿਚਕਾਰ ਅੰਤਰ ਨੂੰ ਸਮਝਣਾ! ਅਤੇ ? TypeScript ਵਿੱਚ ਓਪਰੇਟਰ

ਸੁਰੱਖਿਅਤ ਪਹੁੰਚ ਅਤੇ ਦਾਅਵੇ ਲਈ ਟਾਈਪਸਕ੍ਰਿਪਟ ਆਪਰੇਟਰਾਂ ਦੀ ਪੜਚੋਲ ਕਰਨਾ

ਨਾਲ ਕੰਮ ਕਰਦੇ ਸਮੇਂ TypeScript, ਡਿਵੈਲਪਰ ਅਕਸਰ ਅਜਿਹੇ ਦ੍ਰਿਸ਼ਾਂ ਦਾ ਸਾਹਮਣਾ ਕਰਦੇ ਹਨ ਜਿੱਥੇ ਉਹਨਾਂ ਨੂੰ ਕਿਸੇ ਵਸਤੂ ਦੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਜਾਂ ਤਰੀਕਿਆਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਜੋ ਹੋ ਸਕਦਾ ਹੈ ਪਰਿਭਾਸ਼ਿਤ ਜਾਂ null. ਇਹਨਾਂ ਸਥਿਤੀਆਂ ਵਿੱਚ, ਦ ! (ਵਿਸਮਿਕ ਚਿੰਨ੍ਹ) ਅਤੇ ?(ਪ੍ਰਸ਼ਨ ਚਿੰਨ੍ਹ) ਓਪਰੇਟਰ ਖੇਡ ਵਿੱਚ ਆਉਂਦੇ ਹਨ। ਇਹ ਆਪਰੇਟਰ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਇਹ ਨਿਯੰਤਰਣ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੇ ਹਨ ਕਿ ਕਿਵੇਂ TypeScript ਸੰਭਾਵੀ ਤੌਰ 'ਤੇ ਹੈਂਡਲ ਕਰਦੀ ਹੈ null ਜਾਂ ਪਰਿਭਾਸ਼ਿਤ ਮੁੱਲ।

! ਆਪਰੇਟਰ, ਆਮ ਤੌਰ 'ਤੇ "ਨਾਨ-ਨਲ ਅਸੈਸਸ਼ਨ ਆਪਰੇਟਰ" ਵਜੋਂ ਜਾਣਿਆ ਜਾਂਦਾ ਹੈ, ਦੀ ਵਰਤੋਂ ਟਾਈਪਸਕ੍ਰਿਪਟ ਕੰਪਾਈਲਰ ਨੂੰ ਇਹ ਦੱਸਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਕਿ ਵੇਰੀਏਬਲ ਜਾਂ ਸਮੀਕਰਨ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ। null ਜਾਂ ਪਰਿਭਾਸ਼ਿਤ. ਦੂਜੇ ਪਾਸੇ, ਦ ?. ਓਪਰੇਟਰ, ਜਾਂ "ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ਓਪਰੇਟਰ," ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਵਸਤੂ ਇਸ ਦੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਜਾਂ ਵਿਧੀਆਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਮੌਜੂਦ ਹੈ ਜਾਂ ਨਹੀਂ।

ਇਹ ਸੂਖਮ ਅੰਤਰ ਮਹੱਤਵਪੂਰਨ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਕਿੱਥੇ ਬਣਾਉਂਦੇ ਹਨ ਰਨਟਾਈਮ ਗਲਤੀਆਂ ਪਰਿਭਾਸ਼ਿਤ ਮੁੱਲਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਨਾਲ ਮਹੱਤਵਪੂਰਨ ਸਮੱਸਿਆਵਾਂ ਪੈਦਾ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਹ ਦੋ ਓਪਰੇਟਰ ਕੋਡ ਸੁਰੱਖਿਆ ਅਤੇ ਪੜ੍ਹਨਯੋਗਤਾ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦੇ ਹਨ, ਪਰ ਇਹਨਾਂ ਦੀ ਵਰਤੋਂ ਵੱਖ-ਵੱਖ ਉਦੇਸ਼ਾਂ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।

ਵਿਚਕਾਰ ਮੁੱਖ ਅੰਤਰ ਨੂੰ ਸਮਝਣਾ obj!.ਪ੍ਰਾਪਰਟੀ ਅਤੇ obj?.ਪ੍ਰਾਪਰਟੀ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਹੋਰ ਲਿਖਣ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ ਮਜ਼ਬੂਤ ​​TypeScript ਕੋਡ, ਸੰਭਾਵੀ ਤੌਰ 'ਤੇ ਪਰਿਭਾਸ਼ਿਤ ਡੇਟਾ ਨਾਲ ਕੰਮ ਕਰਦੇ ਸਮੇਂ ਪੈਦਾ ਹੋਣ ਵਾਲੀਆਂ ਆਮ ਸਮੱਸਿਆਵਾਂ ਤੋਂ ਬਚਣਾ। ਇਸ ਲੇਖ ਵਿੱਚ, ਅਸੀਂ ਇਹਨਾਂ ਦੀ ਵਰਤੋਂ ਨੂੰ ਦਰਸਾਉਣ ਲਈ ਉਦਾਹਰਣਾਂ ਦੇ ਨਾਲ ਇਹਨਾਂ ਸੰਕਲਪਾਂ ਵਿੱਚ ਡੂੰਘਾਈ ਨਾਲ ਡੁਬਕੀ ਲਵਾਂਗੇ।

ਹੁਕਮ ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਨ
ਗੈਰ-ਨਲ ਅਸਰਸ਼ਨ ਆਪਰੇਟਰ (!) TypeScript ਨੂੰ ਇਹ ਮੰਨਣ ਲਈ ਮਜਬੂਰ ਕਰਦਾ ਹੈ ਕਿ ਮੁੱਲ ਨਾ ਤਾਂ ਹੈ null ਨਾ ਹੀ ਪਰਿਭਾਸ਼ਿਤ, ਨਲ ਜਾਂਚਾਂ ਨੂੰ ਬਾਈਪਾਸ ਕਰਕੇ।
ਉਦਾਹਰਨ: const ਡੇਟਾ = obj!.data;
ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ (?.) ਕਿਸੇ ਵਸਤੂ ਦੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਜਾਂ ਵਿਧੀਆਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਐਕਸੈਸ ਕਰਦਾ ਹੈ ਜੋ ਹੋ ਸਕਦਾ ਹੈ null ਜਾਂ ਪਰਿਭਾਸ਼ਿਤ.
ਉਦਾਹਰਨ: const ਡੇਟਾ = obj?.data;
ਚਾਈ ਉਮੀਦ ਕਿਸੇ ਫੰਕਸ਼ਨ ਜਾਂ ਮੁੱਲ ਦੇ ਸੰਭਾਵਿਤ ਆਉਟਪੁੱਟ ਬਾਰੇ ਦਾਅਵਾ ਕਰਨ ਲਈ ਯੂਨਿਟ ਟੈਸਟਾਂ ਵਿੱਚ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
ਉਦਾਹਰਨ: ਆਸ (ਨਤੀਜਾ) ਤੋਂ ਬਰਾਬਰ ('ਟੈਸਟ');
console.log ਕੰਸੋਲ ਵਿੱਚ ਡੇਟਾ ਆਉਟਪੁੱਟ ਕਰਦਾ ਹੈ, ਅਕਸਰ ਡੀਬੱਗਿੰਗ ਉਦੇਸ਼ਾਂ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
ਉਦਾਹਰਨ: console.log(data);
ਤੀਰ ਫੰਕਸ਼ਨ ਅਗਿਆਤ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਸੰਖੇਪ ਰੂਪ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ, ਅਕਸਰ ਕਾਲਬੈਕ ਫੰਕਸ਼ਨਾਂ ਵਿੱਚ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
Example: const obj = { doSomething: () =>ਉਦਾਹਰਨ: const obj = { doSomething: () => console.log('Action') };
ਨਲਿਸ਼ ਵੈਲਿਊ ਹੈਂਡਲਿੰਗ ਉਹਨਾਂ ਸਥਿਤੀਆਂ ਵਿੱਚ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਜਿੱਥੇ ਦੋਵੇਂ null ਅਤੇ ਪਰਿਭਾਸ਼ਿਤ ਮੁੱਲਾਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਸੰਭਾਲਣ ਦੀ ਲੋੜ ਹੈ।
ਉਦਾਹਰਨ: const ਨਤੀਜਾ = obj?.data;
ਯੂਨਿਟ ਟੈਸਟ ਫੰਕਸ਼ਨ ਇੱਕ ਟੈਸਟ ਕੇਸ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ ਜੋ ਕੋਡ ਦੇ ਟੁਕੜੇ ਦੇ ਵਿਵਹਾਰ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ।
Example: it('should return data', () =>ਉਦਾਹਰਨ: ਇਹ ('ਡਾਟਾ ਵਾਪਸ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ', () => {...});
ਆਬਜੈਕਟ ਲਿਟਰਲ TypeScript ਜਾਂ JavaScript ਵਿੱਚ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਅਤੇ ਮੁੱਲਾਂ ਦੇ ਨਾਲ ਇੱਕ ਵਸਤੂ ਬਣਤਰ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।
ਉਦਾਹਰਨ: const obj = { ਡੇਟਾ: 'ਟੈਸਟ' };

TypeScript ਵਿੱਚ ਗੈਰ-ਨਲ ਦਾਅਵੇ ਅਤੇ ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ਨੂੰ ਸਮਝਣਾ

ਸਕ੍ਰਿਪਟਾਂ ਦਾ ਪਹਿਲਾ ਸੈੱਟ ਦੋ ਮਹੱਤਵਪੂਰਨ ਟਾਈਪਸਕ੍ਰਿਪਟ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੀ ਪੜਚੋਲ ਕਰਦਾ ਹੈ: ਗੈਰ-ਨਲ ਦਾਅਵਾ ਆਪਰੇਟਰ (!) ਅਤੇ ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ਆਪਰੇਟਰ (?.) ਗੈਰ-ਨੱਲ ਦਾਅਵਾ ਟਾਈਪਸਕ੍ਰਿਪਟ ਕੰਪਾਈਲਰ ਨੂੰ ਇਹ ਦੱਸਣ ਦਾ ਇੱਕ ਸਿੱਧਾ ਤਰੀਕਾ ਹੈ ਕਿ ਇੱਕ ਮੁੱਲ ਕਦੇ ਵੀ ਨਲ ਜਾਂ ਪਰਿਭਾਸ਼ਿਤ ਨਹੀਂ ਹੋਵੇਗਾ। ਇਹ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਅਸੀਂ ਨਿਸ਼ਚਿਤ ਹੁੰਦੇ ਹਾਂ ਕਿ ਰਨਟਾਈਮ ਦੌਰਾਨ ਕੋਈ ਵਸਤੂ ਮੌਜੂਦ ਰਹੇਗੀ, ਭਾਵੇਂ ਕਿ ਟਾਈਪਸਕ੍ਰਿਪਟ ਕੰਪਾਇਲ ਸਮੇਂ ਇਹ ਸਾਬਤ ਨਹੀਂ ਕਰ ਸਕਦੀ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਵਿੱਚ obj!.data, ਅਸੀਂ ਕੰਪਾਈਲਰ ਨੂੰ ਕੋਈ ਵੀ null ਚੈਕ ਛੱਡਣ ਲਈ ਕਹਿ ਰਹੇ ਹਾਂ ਅਤੇ ਮੰਨ ਲਓ ਕਿ obj ਮੌਜੂਦ ਹੈ। ਇਹ ਪਹੁੰਚ, ਜਦਕਿ ਸੁਵਿਧਾਜਨਕ, ਅਗਵਾਈ ਕਰ ਸਕਦਾ ਹੈ ਰਨਟਾਈਮ ਗਲਤੀਆਂ ਜੇਕਰ ਵਸਤੂ ਨਲ ਜਾਂ ਪਰਿਭਾਸ਼ਿਤ ਹੋ ਜਾਂਦੀ ਹੈ।

ਦੂਜੇ ਪਾਸੇ, ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ਓਪਰੇਟਰ ਇੱਕ ਆਬਜੈਕਟ ਵਿੱਚ ਨੇਸਟਡ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਜਾਂ ਤਰੀਕਿਆਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਲਈ ਇੱਕ ਸੁਰੱਖਿਅਤ ਢੰਗ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਜੋ ਕਿ null ਹੋ ਸਕਦਾ ਹੈ। ਦੀ ਹਾਲਤ ਵਿੱਚ obj?.data, ਕੋਡ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਡੇਟਾ ਸੰਪੱਤੀ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਵਸਤੂ ਮੌਜੂਦ ਹੈ ਜਾਂ ਨਹੀਂ। ਜੇ ਵਸਤੂ ਨਲ ਜਾਂ ਪਰਿਭਾਸ਼ਿਤ ਹੈ, ਤਾਂ ਇਹ ਗਲਤੀ ਸੁੱਟਣ ਦੀ ਬਜਾਏ ਪਰਿਭਾਸ਼ਿਤ ਵਾਪਸ ਆਉਂਦੀ ਹੈ। ਇਹ ਵਿਧੀ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਗਤੀਸ਼ੀਲ ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਉਪਯੋਗੀ ਹੈ ਜਿੱਥੇ ਵਸਤੂਆਂ ਨੂੰ ਸ਼ਰਤ ਅਨੁਸਾਰ ਬਣਾਇਆ ਜਾ ਸਕਦਾ ਹੈ ਜਾਂ APIs ਵਰਗੇ ਬਾਹਰੀ ਸਰੋਤਾਂ ਤੋਂ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ ਕਰੈਸ਼ ਜਾਂ ਅਚਾਨਕ ਵਿਵਹਾਰ ਨੂੰ ਰੋਕਦਾ ਹੈ, ਤੁਹਾਡੇ ਕੋਡ ਨੂੰ ਹੋਰ ਬਣਾਉਂਦਾ ਹੈ ਲਚਕੀਲਾ.

ਦੂਜੀ ਉਦਾਹਰਣ ਇਹਨਾਂ ਓਪਰੇਟਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਫੰਕਸ਼ਨ ਇਨਵੋਕੇਸ਼ਨਾਂ 'ਤੇ ਕੇਂਦ੍ਰਤ ਕਰਦੀ ਹੈ। ਗੈਰ-ਨਲ ਦਾਅਵੇ ਦੇ ਨਾਲ, ਅਸੀਂ ਇੱਕ ਵਿਧੀ ਦੀ ਮੰਗ ਨੂੰ ਮਜਬੂਰ ਕਰਦੇ ਹਾਂ, ਇਹ ਮੰਨਦੇ ਹੋਏ ਕਿ ਵਸਤੂ ਅਤੇ ਵਿਧੀ ਦੋਵੇਂ ਮੌਜੂਦ ਹਨ, ਜਿਵੇਂ ਕਿ ਵਿੱਚ ਦੇਖਿਆ ਗਿਆ ਹੈ obj!.doSomething(). ਇਹ ਉਹਨਾਂ ਸਥਿਤੀਆਂ ਵਿੱਚ ਮਦਦਗਾਰ ਹੋ ਸਕਦਾ ਹੈ ਜਿੱਥੇ ਡਿਵੈਲਪਰ ਦਾ ਡੇਟਾ 'ਤੇ ਪੂਰਾ ਨਿਯੰਤਰਣ ਹੁੰਦਾ ਹੈ, ਪਰ ਜੇਕਰ ਧਾਰਨਾ ਅਸਫਲ ਹੋ ਜਾਂਦੀ ਹੈ ਤਾਂ ਇਹ ਇੱਕ ਜੋਖਮ ਪੈਦਾ ਕਰਦਾ ਹੈ। ਜੇਕਰ ਵਿਧੀ ਮੌਜੂਦ ਨਹੀਂ ਹੈ ਜਾਂ ਆਬਜੈਕਟ ਖਾਲੀ ਹੈ, ਤਾਂ ਪ੍ਰੋਗਰਾਮ ਇੱਕ ਅਪਵਾਦ ਸੁੱਟੇਗਾ। ਇਹ ਗੈਰ-ਨੂਲ ਦਾਅਵੇ ਨੂੰ ਇੱਕ ਉੱਚ-ਜੋਖਮ, ਉੱਚ-ਇਨਾਮ ਟੂਲ ਬਣਾਉਂਦਾ ਹੈ।

ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ਫੰਕਸ਼ਨ ਕਾਲਾਂ 'ਤੇ ਲਾਗੂ ਹੁੰਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਵਿੱਚ obj?.doSomething(), ਇਸ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਇਹ ਜਾਂਚ ਕਰਕੇ ਕਿ ਕੀ ਵਿਧੀ ਮੌਜੂਦ ਹੈ, ਅਜਿਹੀਆਂ ਰਨਟਾਈਮ ਗਲਤੀਆਂ ਨੂੰ ਰੋਕਦਾ ਹੈ। ਜੇਕਰ ਵਿਧੀ ਜਾਂ ਆਬਜੈਕਟ ਪਰਿਭਾਸ਼ਿਤ ਨਹੀਂ ਹੈ, ਤਾਂ ਕੁਝ ਨਹੀਂ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਪ੍ਰੋਗਰਾਮ ਇੱਕ ਗਲਤੀ ਸੁੱਟੇ ਬਿਨਾਂ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਜਾਰੀ ਰੱਖਦਾ ਹੈ। ਇਸ ਤਕਨੀਕ ਦੀ ਉਹਨਾਂ ਸਥਿਤੀਆਂ ਵਿੱਚ ਬਹੁਤ ਜ਼ਿਆਦਾ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਜਿੱਥੇ ਆਬਜੈਕਟ ਨੂੰ ਗਤੀਸ਼ੀਲ ਰੂਪ ਵਿੱਚ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਜਾਂ ਪ੍ਰੋਗਰਾਮ ਦੇ ਕੁਝ ਪੜਾਵਾਂ 'ਤੇ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ ਸੁਰੱਖਿਅਤ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ ਅਤੇ ਵਰਬੋਜ਼ ਨਲ-ਚੈਕਿੰਗ ਕੋਡ ਦੀ ਲੋੜ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ, ਦੋਵਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਂਦਾ ਹੈ ਪ੍ਰਦਰਸ਼ਨ ਅਤੇ ਕੋਡ ਪੜ੍ਹਨਯੋਗਤਾ।

ਟਾਈਪਸਕ੍ਰਿਪਟ ਵਿੱਚ ਗੈਰ-ਨਲ ਅਸੈਸਸ਼ਨ ਬਨਾਮ ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ਨੂੰ ਸੰਭਾਲਣਾ

TypeScript - ਆਬਜੈਕਟ ਪ੍ਰਾਪਰਟੀ ਐਕਸੈਸ ਲਈ ਗੈਰ-ਨਲ ਅਸੈਸਸ਼ਨ ਅਤੇ ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਫਰੰਟਐਂਡ ਪ੍ਰਸੰਗ

// Example 1: Using non-null assertion operator (!)
// The assumption here is that obj is definitely not null or undefined
const obj: { data?: string } | null = { data: 'Hello' };
const data: string = obj!.data;  // Non-null assertion, ignores potential null/undefined
console.log(data);  // Output: 'Hello'

// Example 2: Optional chaining (?.) for safer access
// This approach checks if obj exists before accessing data property
const obj2: { data?: string } | null = null;
const data2: string | undefined = obj2?.data;  // Safely returns undefined if obj2 is null
console.log(data2);  // Output: undefined

// Note: The first approach forces the compiler to assume obj is not null
// The second approach ensures no runtime error if obj is null or undefined

ਗੈਰ-ਨਲ ਅਸੈਸਸ਼ਨ ਬਨਾਮ ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ਦੇ ਨਾਲ ਸੁਰੱਖਿਅਤ ਫੰਕਸ਼ਨ ਇਨਵੋਕੇਸ਼ਨ

TypeScript - ਫਰੰਟਐਂਡ ਸੰਦਰਭ ਜਿਸ ਵਿੱਚ ਆਬਜੈਕਟ ਫੰਕਸ਼ਨ ਕਾਲਾਂ ਨਾਲ ਗਲਤੀ ਹੈਂਡਲਿੰਗ ਅਤੇ ਸੁਰੱਖਿਅਤ ਪਹੁੰਚ ਸ਼ਾਮਲ ਹੈ

// Example 1: Using non-null assertion operator for function invocation
// Assumes obj is not null or undefined before invoking the method
const objFunc: { doSomething?: () => void } | null = { doSomething: () => console.log('Action') };
objFunc!.doSomething();  // Forces execution, assuming objFunc is valid

// Example 2: Optional chaining operator for function invocation
// This approach safely checks if objFunc exists before calling the method
const objFunc2: { doSomething?: () => void } | null = null;
objFunc2?.doSomething();  // No error thrown, simply does nothing if objFunc2 is null

// Conclusion: Non-null assertion is riskier but direct, while optional chaining is safer but may return undefined

ਗੈਰ-ਨਲ ਦਾਅਵੇ ਅਤੇ ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ਲਈ ਯੂਨਿਟ ਟੈਸਟ

TypeScript - ਵੱਖ-ਵੱਖ ਵਾਤਾਵਰਣਾਂ ਵਿੱਚ ਦੋਵੇਂ ਪਹੁੰਚਾਂ ਦੀ ਜਾਂਚ ਕਰਨ ਵਾਲੀ ਯੂਨਿਟ

// Unit Test 1: Testing non-null assertion operator (!)
import { expect } from 'chai';
it('should return data with non-null assertion', () => {
  const obj = { data: 'Test' };
  const result = obj!.data;
  expect(result).to.equal('Test');
});

// Unit Test 2: Testing optional chaining operator (?.)
it('should return undefined if obj is null using optional chaining', () => {
  const obj = null;
  const result = obj?.data;
  expect(result).to.be.undefined;
});

// Ensures both methods behave as expected in null/undefined scenarios

ਉੱਨਤ ਤਕਨੀਕਾਂ: ਗੈਰ-ਨਲ ਦਾਅਵੇ ਅਤੇ ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ਦੀ ਪੜਚੋਲ ਕਰਨਾ

ਦੇ ਬੁਨਿਆਦੀ ਵਰਤੋਂ ਦੇ ਕੇਸਾਂ ਤੋਂ ਇਲਾਵਾ ਗੈਰ-ਨਲ ਦਾਅਵਾ ਅਤੇ ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ਪਹਿਲਾਂ ਚਰਚਾ ਕੀਤੀ ਗਈ ਸੀ, ਇਹ ਓਪਰੇਟਰ ਗੁੰਝਲਦਾਰ ਡੇਟਾ ਢਾਂਚੇ ਨੂੰ ਸੰਭਾਲਣ ਵਿੱਚ ਵੀ ਮਹੱਤਵਪੂਰਨ ਭੂਮਿਕਾ ਨਿਭਾਉਂਦੇ ਹਨ, ਖਾਸ ਤੌਰ 'ਤੇ ਵੱਡੇ ਪੈਮਾਨੇ ਦੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ। ਜਦੋਂ ਡੂੰਘਾਈ ਨਾਲ ਨੇਸਟਡ ਵਸਤੂਆਂ ਜਾਂ APIs ਤੋਂ ਪ੍ਰਾਪਤ ਕੀਤੇ ਵੱਡੇ ਡੇਟਾਸੇਟਾਂ ਨਾਲ ਕੰਮ ਕਰਦੇ ਹੋ, ਤਾਂ ਅਜਿਹੇ ਦ੍ਰਿਸ਼ਾਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਆਮ ਗੱਲ ਹੈ ਜਿੱਥੇ ਐਪਲੀਕੇਸ਼ਨ ਜੀਵਨ ਚੱਕਰ ਦੇ ਵੱਖ-ਵੱਖ ਪੜਾਵਾਂ 'ਤੇ ਕੁਝ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਮੌਜੂਦ ਹੋ ਸਕਦੀਆਂ ਹਨ ਜਾਂ ਨਹੀਂ ਵੀ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਡਿਵੈਲਪਰ ਦਰਜਾਬੰਦੀ ਵਿੱਚ ਹਰੇਕ ਸੰਪੱਤੀ ਲਈ ਵਾਰ-ਵਾਰ ਨਲ ਜਾਂਚਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕੀਤੇ ਬਿਨਾਂ ਕਲੀਨਰ ਅਤੇ ਵਧੇਰੇ ਸਾਂਭਣਯੋਗ ਕੋਡ ਲਿਖ ਸਕਦੇ ਹਨ।

ਵਿਚਾਰਨ ਲਈ ਇਕ ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਪਹਿਲੂ ਇਹ ਹੈ ਕਿ ਇਹ ਓਪਰੇਟਰ ਟਾਈਪਸਕ੍ਰਿਪਟ ਦੇ ਸਖਤ ਮੋਡ ਨਾਲ ਕਿਵੇਂ ਅੰਤਰਕਿਰਿਆ ਕਰਦੇ ਹਨ। ਸਖਤ ਮੋਡ ਵਿੱਚ, TypeScript ਸਖਤ ਨਲ ਅਤੇ ਪਰਿਭਾਸ਼ਿਤ ਜਾਂਚਾਂ ਨੂੰ ਲਾਗੂ ਕਰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਸੰਭਾਵੀ ਤੌਰ 'ਤੇ ਪਰਿਭਾਸ਼ਿਤ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨਾ ਵਧੇਰੇ ਚੁਣੌਤੀਪੂਰਨ ਹੁੰਦਾ ਹੈ। ਦ ! ਆਪਰੇਟਰ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਸੰਭਾਵਿਤ null ਮੁੱਲਾਂ ਬਾਰੇ TypeScript ਦੀਆਂ ਚੇਤਾਵਨੀਆਂ ਨੂੰ ਬਾਈਪਾਸ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ, ਪਰ ਇਸਨੂੰ ਸਾਵਧਾਨੀ ਨਾਲ ਵਰਤਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ, ਕਿਉਂਕਿ ਇਸਦੀ ਦੁਰਵਰਤੋਂ ਹੋਣ 'ਤੇ ਰਨਟਾਈਮ ਗਲਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਇਸ ਲਈ, ਦ ? ਓਪਰੇਟਰ ਨੂੰ ਅਕਸਰ ਉਹਨਾਂ ਸਥਿਤੀਆਂ ਵਿੱਚ ਤਰਜੀਹ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ ਜਿੱਥੇ ਕਿਸੇ ਵਸਤੂ ਜਾਂ ਸੰਪੱਤੀ ਦੀ ਹੋਂਦ ਅਨਿਸ਼ਚਿਤ ਹੁੰਦੀ ਹੈ।

ਇਸ ਤੋਂ ਇਲਾਵਾ, ਹੋਰ ਆਧੁਨਿਕ JavaScript ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੇ ਨਾਲ ਜੋੜ ਕੇ ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਜਿਵੇਂ ਕਿ ਡਿਫੌਲਟ ਮੁੱਲ (|| ਜਾਂ ?? ਓਪਰੇਟਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ) ਕੋਡ ਸੁਰੱਖਿਆ ਅਤੇ ਪੜ੍ਹਨਯੋਗਤਾ ਵਿੱਚ ਮਹੱਤਵਪੂਰਨ ਸੁਧਾਰ ਕਰ ਸਕਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਡਿਵੈਲਪਰ ਕਿਸੇ ਵਸਤੂ ਦੀ ਸੰਪੱਤੀ ਨੂੰ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਐਕਸੈਸ ਕਰ ਸਕਦੇ ਹਨ ਅਤੇ ਇੱਕ ਫਾਲਬੈਕ ਮੁੱਲ ਪ੍ਰਦਾਨ ਕਰ ਸਕਦੇ ਹਨ ਜੇਕਰ ਸੰਪੱਤੀ ਪਰਿਭਾਸ਼ਿਤ ਨਹੀਂ ਹੈ। ਇਹ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਫਾਰਮਾਂ, ਉਪਭੋਗਤਾ ਇਨਪੁਟਸ, ਜਾਂ ਸੰਰਚਨਾਵਾਂ ਵਿੱਚ ਲਾਭਦਾਇਕ ਹੈ ਜਿੱਥੇ ਮੁੱਲ ਗੈਰਹਾਜ਼ਰ ਜਾਂ ਵਿਕਲਪਿਕ ਹੋ ਸਕਦੇ ਹਨ, ਕੋਡ ਦੀ ਮਜ਼ਬੂਤੀ ਨੂੰ ਹੋਰ ਵਧਾਉਂਦੇ ਹੋਏ।

ਗੈਰ-ਨਲ ਅਸੈਸਸ਼ਨ ਅਤੇ ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ 'ਤੇ ਅਕਸਰ ਪੁੱਛੇ ਜਾਂਦੇ ਸਵਾਲ

  1. TypeScript ਵਿੱਚ ਗੈਰ-ਨਲ ਅਸੈਸਸ਼ਨ ਆਪਰੇਟਰ (!) ਕੀ ਕਰਦਾ ਹੈ?
  2. ! ਆਪਰੇਟਰ ਟਾਈਪਸਕ੍ਰਿਪਟ ਕੰਪਾਈਲਰ ਨੂੰ ਨਲ ਜਾਂ ਪਰਿਭਾਸ਼ਿਤ ਜਾਂਚਾਂ ਨੂੰ ਅਣਡਿੱਠ ਕਰਨ ਲਈ ਕਹਿੰਦਾ ਹੈ, ਇਹ ਮੰਨ ਕੇ ਕਿ ਵੇਰੀਏਬਲ ਹਮੇਸ਼ਾਂ ਪਰਿਭਾਸ਼ਿਤ ਹੁੰਦਾ ਹੈ।
  3. ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ (?.) ਗੈਰ-ਨੱਲ ਦਾਅਵੇ ਤੋਂ ਕਿਵੇਂ ਵੱਖਰੀ ਹੈ?
  4. ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ?. ਸੰਪੱਤੀਆਂ ਜਾਂ ਵਿਧੀਆਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਐਕਸੈਸ ਕਰਦਾ ਹੈ, ਜੇਕਰ ਆਬਜੈਕਟ ਖਾਲੀ ਹੈ, ਤਾਂ ਪਰਿਭਾਸ਼ਿਤ ਵਾਪਸ ਆ ਰਿਹਾ ਹੈ ! ਬਿਨਾਂ ਜਾਂਚਾਂ ਦੇ ਪਹੁੰਚ ਨੂੰ ਮਜਬੂਰ ਕਰਦਾ ਹੈ।
  5. ਮੈਨੂੰ ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ਦੀ ਵਰਤੋਂ ਕਦੋਂ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ?
  6. ਵਰਤੋ ?. ਸੰਭਾਵੀ ਤੌਰ 'ਤੇ ਪਰਿਭਾਸ਼ਿਤ ਜਾਂ ਨਲ ਵਸਤੂਆਂ ਨਾਲ ਕੰਮ ਕਰਦੇ ਸਮੇਂ ਰਨਟਾਈਮ ਗਲਤੀਆਂ ਨੂੰ ਰੋਕਣ ਅਤੇ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਐਕਸੈਸ ਕਰਨ ਲਈ।
  7. ਕੀ ਗੈਰ-ਨਲ ਦਾਅਵਾ ਰਨਟਾਈਮ ਗਲਤੀਆਂ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦਾ ਹੈ?
  8. ਹਾਂ, ਵਰਤ ਕੇ ! ਰਨਟਾਈਮ ਗਲਤੀਆਂ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦਾ ਹੈ ਜੇਕਰ ਮੁੱਲ ਨਲ ਜਾਂ ਪਰਿਭਾਸ਼ਿਤ ਨਹੀਂ ਹੈ, ਕਿਉਂਕਿ ਇਹ TypeScript ਦੀਆਂ ਸੁਰੱਖਿਆ ਜਾਂਚਾਂ ਨੂੰ ਬਾਈਪਾਸ ਕਰਦਾ ਹੈ।
  9. ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦਾ ਕੀ ਫਾਇਦਾ ਹੈ?
  10. ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ?. ਆਬਜੈਕਟ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਐਕਸੈਸ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਸਮੇਂ ਕਰੈਸ਼ਾਂ ਤੋਂ ਬਚ ਕੇ ਕੋਡ ਸੁਰੱਖਿਆ ਵਿੱਚ ਸੁਧਾਰ ਕਰਦਾ ਹੈ।

TypeScript ਆਪਰੇਟਰਾਂ 'ਤੇ ਅੰਤਿਮ ਵਿਚਾਰ

ਸਿੱਟੇ ਵਜੋਂ, ਦ ਗੈਰ-ਨਲ ਦਾਅਵਾ ਓਪਰੇਟਰ (!) ਉਦੋਂ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਤੁਹਾਨੂੰ ਭਰੋਸਾ ਹੁੰਦਾ ਹੈ ਕਿ ਕੋਈ ਮੁੱਲ ਕਦੇ ਵੀ ਖਾਲੀ ਨਹੀਂ ਹੁੰਦਾ। ਇਹ TypeScript ਨੂੰ ਸੁਰੱਖਿਆ ਜਾਂਚਾਂ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਨ ਲਈ ਮਜਬੂਰ ਕਰਦਾ ਹੈ, ਪਰ ਅਚਾਨਕ ਰਨਟਾਈਮ ਗਲਤੀਆਂ ਤੋਂ ਬਚਣ ਲਈ ਇਸਨੂੰ ਧਿਆਨ ਨਾਲ ਵਰਤਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਇਹ ਆਪਰੇਟਰ ਤੁਹਾਨੂੰ ਨਿਯੰਤਰਣ ਦਿੰਦਾ ਹੈ ਪਰ ਜੋਖਮਾਂ ਦੇ ਨਾਲ ਵੀ ਆਉਂਦਾ ਹੈ।

ਦੂਜੇ ਪਾਸੇ, ਦ ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ਆਪਰੇਟਰ (?.) ਸੰਪਤੀਆਂ ਅਤੇ ਤਰੀਕਿਆਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਲਈ ਇੱਕ ਸੁਰੱਖਿਅਤ ਵਿਕਲਪ ਹੈ। ਜਦੋਂ ਆਬਜੈਕਟ ਜਾਂ ਪ੍ਰਾਪਰਟੀ ਮੌਜੂਦ ਨਹੀਂ ਹੁੰਦੀ ਹੈ ਤਾਂ ਇਹ ਪਰਿਭਾਸ਼ਿਤ ਵਾਪਸ ਆਉਣ ਦੁਆਰਾ ਕਰੈਸ਼ਾਂ ਨੂੰ ਰੋਕਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਤੁਹਾਡੇ ਟਾਈਪਸਕ੍ਰਿਪਟ ਕੋਡ ਨੂੰ ਗੁੰਝਲਦਾਰ ਸਥਿਤੀਆਂ ਵਿੱਚ ਵਧੇਰੇ ਭਰੋਸੇਮੰਦ ਅਤੇ ਸਾਂਭਣਯੋਗ ਬਣਾਇਆ ਜਾਂਦਾ ਹੈ।

ਸਰੋਤ ਅਤੇ ਹਵਾਲੇ
  1. ਇਹ ਲੇਖ TypeScript ਦਸਤਾਵੇਜ਼ਾਂ ਤੋਂ ਪ੍ਰੇਰਿਤ ਸੀ, ਜੋ ਦੱਸਦਾ ਹੈ ਕਿ ਕਿਵੇਂ ਕੰਮ ਕਰਨਾ ਹੈ ਗੈਰ-ਨਲ ਦਾਅਵਾ ਅਤੇ ਵਿਕਲਪਿਕ ਚੇਨਿੰਗ ਆਪਰੇਟਰ ਅਧਿਕਾਰੀ 'ਤੇ ਹੋਰ ਪੜ੍ਹੋ ਟਾਈਪ ਸਕ੍ਰਿਪਟ ਦਸਤਾਵੇਜ਼ .
  2. ਦੀ JavaScript ਹੈਂਡਲਿੰਗ 'ਤੇ ਵਾਧੂ ਸੰਦਰਭ ਲਈ null ਅਤੇ ਪਰਿਭਾਸ਼ਿਤ ਮੁੱਲ, ਦੌਰਾ MDN ਵੈੱਬ ਡੌਕਸ .
  3. ਅਸਲ-ਸੰਸਾਰ TypeScript ਵਰਤੋਂ ਬਾਰੇ ਸੂਝ ਇਸ ਬਲਾੱਗ ਪੋਸਟ ਵਿੱਚ ਲੱਭੀ ਜਾ ਸਕਦੀ ਹੈ LogRocket ਬਲੌਗ , ਜੋ ਵਧੀਆ ਅਭਿਆਸਾਂ ਦੀ ਚਰਚਾ ਕਰਦਾ ਹੈ।