ਐਬਸਟਰੈਕਟ ਕਲਾਸਾਂ ਵਿੱਚ ਟਾਈਪਸਕ੍ਰਿਪਟ ਇੰਡੈਕਸ ਹਸਤਾਖਰ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰਨਾ

ਐਬਸਟਰੈਕਟ ਕਲਾਸਾਂ ਵਿੱਚ ਟਾਈਪਸਕ੍ਰਿਪਟ ਇੰਡੈਕਸ ਹਸਤਾਖਰ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰਨਾ
ਐਬਸਟਰੈਕਟ ਕਲਾਸਾਂ ਵਿੱਚ ਟਾਈਪਸਕ੍ਰਿਪਟ ਇੰਡੈਕਸ ਹਸਤਾਖਰ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰਨਾ

ਰਿਡੰਡੈਂਸੀ ਦੇ ਬਿਨਾਂ API ਕਲਾਸ ਗਲਤੀਆਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ

ਕੀ ਤੁਸੀਂ ਕਦੇ ਗੁੰਝਲਦਾਰ API ਕਲਾਸਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦੇ ਸਮੇਂ ਆਪਣੇ ਆਪ ਨੂੰ ਟਾਈਪਸਕ੍ਰਿਪਟ ਗਲਤੀਆਂ ਦੇ ਜਾਲ ਵਿੱਚ ਫਸਿਆ ਪਾਇਆ ਹੈ? ਹਾਲ ਹੀ ਵਿੱਚ, ਮੈਨੂੰ ਇੱਕ ਅਬਸਟਰੈਕਟ `ਬੇਸ ਏਪੀਆਈ` ਕਲਾਸ ਅਤੇ ਇਸਦੇ ਉਪ-ਕਲਾਸਾਂ ਜਿਵੇਂ ਕਿ `ਟ੍ਰਾਂਜੈਕਸ਼ਨ ਏਪੀਆਈ` ਅਤੇ `ਫਾਈਲਏਪੀਆਈ` ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਵਾਲੀ ਇੱਕ ਪਰੇਸ਼ਾਨ ਕਰਨ ਵਾਲੀ ਸਮੱਸਿਆ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪਿਆ। ਸਮੱਸਿਆ? TypeScript ਹਰ ਉਪ-ਕਲਾਸ ਵਿੱਚ ਸੂਚਕਾਂਕ ਦਸਤਖਤਾਂ ਦੀ ਮੰਗ ਕਰਦਾ ਰਿਹਾ। 😫

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

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

ਜੇਕਰ ਤੁਸੀਂ TypeScript ਦੀਆਂ ਬਾਰੀਕੀਆਂ ਨਾਲ ਜੂਝ ਰਹੇ ਹੋ, ਤਾਂ ਚਿੰਤਾ ਨਾ ਕਰੋ-ਤੁਸੀਂ ਇਕੱਲੇ ਨਹੀਂ ਹੋ। ਆਉ ਇੱਕ ਹੋਰ ਸ਼ਾਨਦਾਰ ਅਤੇ ਰੱਖ-ਰਖਾਅ ਯੋਗ ਕੋਡਬੇਸ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਕਦਮ-ਦਰ-ਕਦਮ, ਇਕੱਠੇ ਇਸ ਮੁੱਦੇ ਨੂੰ ਸੁਲਝਾਉਂਦੇ ਹਾਂ।

ਹੁਕਮ ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਨ
static readonly [key: string] ਇੱਕ TypeScript ਕਲਾਸ ਵਿੱਚ ਸਥਿਰ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਲਈ ਇੱਕ ਸੂਚਕਾਂਕ ਦਸਤਖਤ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ, ਖਾਸ ਮੁੱਲ ਕਿਸਮਾਂ ਦੇ ਨਾਲ ਡਾਇਨਾਮਿਕ ਪ੍ਰਾਪਰਟੀ ਕੁੰਜੀਆਂ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।
Record>> ਇੱਕ ਮੈਪ ਕੀਤੀ ਕਿਸਮ ਨੂੰ ਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ ਜਿੱਥੇ ਕੁੰਜੀਆਂ ਸਤਰ ਹੁੰਦੀਆਂ ਹਨ ਅਤੇ ਮੁੱਲ `ApiCall ਦਾ ਅਨੁਸਰਣ ਕਰਦੇ ਹਨ` ਬਣਤਰ, ਗਤੀਸ਼ੀਲ ਵਸਤੂ ਸਕੀਮਾਂ ਲਈ ਆਦਰਸ਼।
extends constructor ਮੂਲ ਲਾਗੂਕਰਨ ਨੂੰ ਸੋਧੇ ਬਿਨਾਂ ਨਵੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਜਾਂ ਵਿਹਾਰਾਂ ਨੂੰ ਜੋੜ ਕੇ ਇੱਕ ਕਲਾਸ ਨੂੰ ਵਧਾਉਣ ਲਈ ਇੱਕ ਸਜਾਵਟ ਵਿੱਚ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
WithIndexSignature decorator ਇੱਕ ਕਸਟਮ ਡੈਕੋਰੇਟਰ ਫੰਕਸ਼ਨ ਕਲਾਸਾਂ ਵਿੱਚ ਇੱਕ ਸੂਚਕਾਂਕ ਦਸਤਖਤ ਨੂੰ ਗਤੀਸ਼ੀਲ ਰੂਪ ਵਿੱਚ ਇੰਜੈਕਟ ਕਰਨ ਲਈ ਲਾਗੂ ਕੀਤਾ ਗਿਆ ਹੈ, ਸਬ-ਕਲਾਸਾਂ ਵਿੱਚ ਕੋਡ ਡੁਪਲੀਕੇਸ਼ਨ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ।
Object.values() ਕਿਸੇ ਵਸਤੂ ਦੇ ਮੁੱਲਾਂ 'ਤੇ ਦੁਹਰਾਉਂਦਾ ਹੈ, ਆਮ ਤੌਰ 'ਤੇ ਏਪੀਆਈ ਅੰਤਮ ਬਿੰਦੂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਬਾਰ ਬਾਰ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ ਇੱਥੇ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
if ('endpoint' in value) ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਕੋਈ ਵਿਸ਼ੇਸ਼ਤਾ ਕਿਸੇ ਵਸਤੂ ਦੇ ਅੰਦਰ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਮੌਜੂਦ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹੋਏ ਕਿ ਖਾਸ ਖੇਤਰਾਂ ਜਿਵੇਂ ਕਿ 'ਐਂਡਪੁਆਇੰਟ' ਦੀ ਪਛਾਣ ਕੀਤੀ ਗਈ ਹੈ ਅਤੇ ਪ੍ਰਕਿਰਿਆ ਕੀਤੀ ਗਈ ਹੈ।
describe() block ਸਮੂਹ ਸਬੰਧਤ ਟੈਸਟ ਕੇਸਾਂ ਲਈ ਜੈਸਟ ਟੈਸਟਿੰਗ ਸੰਟੈਕਸ, API ਕਾਰਜਸ਼ੀਲਤਾ ਪ੍ਰਮਾਣਿਕਤਾ ਲਈ ਟੈਸਟ ਸਪਸ਼ਟਤਾ ਅਤੇ ਸੰਗਠਨ ਵਿੱਚ ਸੁਧਾਰ ਕਰਨਾ।
expect().toContain() ਐਰੇ ਦੇ ਅੰਦਰ ਇੱਕ ਖਾਸ ਮੁੱਲ ਮੌਜੂਦ ਹੋਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾਂਦੀ ਇੱਕ ਜੈਸਟ ਦਾਅਵਾ ਵਿਧੀ, ਐਕਸਟਰੈਕਟਡ ਐਂਡਪੁਆਇੰਟ ਸੂਚੀਆਂ ਦੀ ਜਾਂਚ ਲਈ ਉਪਯੋਗੀ।
isEndpointSafe() 'ApiManager' ਕਲਾਸ ਵਿੱਚ ਇੱਕ ਉਪਯੋਗਤਾ ਵਿਧੀ ਜੋ ਜਾਂਚ ਕਰਦੀ ਹੈ ਕਿ ਕੀ ਇੱਕ ਐਂਡਪੁਆਇੰਟ 'ਐਂਡਪੁਆਇੰਟ ਰਜਿਸਟਰੀ' ਵਿੱਚ ਮੌਜੂਦ ਹੈ, ਸੁਰੱਖਿਅਤ API ਕਾਲਾਂ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ।
export abstract class ਟਾਈਪਸਕ੍ਰਿਪਟ ਵਿੱਚ ਇੱਕ ਐਬਸਟਰੈਕਟ ਬੇਸ ਕਲਾਸ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ, ਸਿੱਧੀ ਸ਼ੁਰੂਆਤ ਨੂੰ ਰੋਕਦੇ ਹੋਏ ਉਤਪੰਨ ਕਲਾਸਾਂ ਲਈ ਇੱਕ ਬਲੂਪ੍ਰਿੰਟ ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਹੈ।

TypeScript ਦੇ ਸੂਚਕਾਂਕ ਹਸਤਾਖਰ ਚੁਣੌਤੀਆਂ ਨੂੰ ਸਮਝਣਾ ਅਤੇ ਸੋਧਣਾ

ਉਪਰੋਕਤ ਸਕ੍ਰਿਪਟਾਂ TypeScript ਦੇ `BaseAPI` ਕਲਾਸ ਅਤੇ ਇਸਦੇ ਉਪ-ਕਲਾਸਾਂ ਵਿੱਚ ਇੱਕ ਸੂਚਕਾਂਕ ਹਸਤਾਖਰ ਦੀ ਲੋੜ ਦੇ ਮੁੱਦੇ ਨਾਲ ਨਜਿੱਠਦੀਆਂ ਹਨ। ਇਹ ਸਮੱਸਿਆ ਉਦੋਂ ਪੈਦਾ ਹੁੰਦੀ ਹੈ ਜਦੋਂ ਐਬਸਟ੍ਰੈਕਟ ਕਲਾਸਾਂ ਵਿੱਚ ਸਥਿਰ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੀ ਇੱਕ ਸਾਂਝੀ ਬਣਤਰ ਦੀ ਪਾਲਣਾ ਕਰਨ ਦੀ ਉਮੀਦ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। 'BaseAPI' ਕਲਾਸ ਲਚਕਦਾਰ ਸੰਪੱਤੀ ਕਿਸਮਾਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨ ਲਈ ਇੱਕ ਸਥਿਰ ਸੂਚਕਾਂਕ ਹਸਤਾਖਰ ਨੂੰ ਨਿਯੁਕਤ ਕਰਦਾ ਹੈ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਸਾਰੀਆਂ ਪ੍ਰਾਪਤ ਕੀਤੀਆਂ ਕਲਾਸਾਂ ਜਿਵੇਂ ਕਿ `TransactionAPI` ਅਤੇ `FileAPI` ਇੱਕ ਯੂਨੀਫਾਈਡ ਸਕੀਮਾ ਦੀ ਪਾਲਣਾ ਕਰਦੇ ਹੋਏ API ਅੰਤਮ ਬਿੰਦੂਆਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰ ਸਕਦੀਆਂ ਹਨ। ਇਹ ਪਹੁੰਚ ਕਿਸਮ ਦੀ ਸੁਰੱਖਿਆ ਨੂੰ ਕਾਇਮ ਰੱਖਦੇ ਹੋਏ ਦੁਹਰਾਉਣ ਵਾਲੇ ਕੋਡ ਨੂੰ ਘਟਾਉਂਦੀ ਹੈ। ਇੱਕ ਵਿਸ਼ਾਲ ਫਾਈਲ ਕੈਬਿਨੇਟ ਨੂੰ ਸੰਗਠਿਤ ਕਰਨ ਦੀ ਕਲਪਨਾ ਕਰੋ—ਹਰੇਕ ਦਰਾਜ਼ (ਕਲਾਸ) ਨੂੰ ਇਕਸਾਰਤਾ ਲਈ ਇੱਕੋ ਲੇਬਲਿੰਗ ਪ੍ਰਣਾਲੀ ਦੀ ਪਾਲਣਾ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। 🗂️

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

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

ਅੰਤ ਵਿੱਚ, ਜੇਸਟ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਯੂਨਿਟ ਟੈਸਟ ਸਾਡੇ ਹੱਲਾਂ ਦੀ ਸ਼ੁੱਧਤਾ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਦੇ ਹਨ। ਇਹ ਟੈਸਟ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ ਕਿ 'ApiManager' ਵਿੱਚ ਐਂਡਪੁਆਇੰਟ ਐਕਸਟਰੈਕਸ਼ਨ ਫੰਕਸ਼ਨ ਉਮੀਦ ਅਨੁਸਾਰ ਕੰਮ ਕਰਦੇ ਹਨ। 'expect().toContain()' ਵਰਗੀਆਂ ਕਮਾਂਡਾਂ ਇਹ ਜਾਂਚ ਕਰਦੀਆਂ ਹਨ ਕਿ ਕੀ ਤਿਆਰ ਕੀਤੀ ਰਜਿਸਟਰੀ ਵਿੱਚ ਖਾਸ ਅੰਤਮ ਬਿੰਦੂ ਮੌਜੂਦ ਹਨ, ਇਹ ਪੁਸ਼ਟੀ ਕਰਦੇ ਹੋਏ ਕਿ ਹੱਲ ਨਿਰਵਿਘਨ ਏਕੀਕ੍ਰਿਤ ਹਨ। `TransactionAPI` ਅਤੇ `FileAPI` ਦੋਵਾਂ ਦੀ ਜਾਂਚ ਕਰਕੇ, ਅਸੀਂ ਗਾਰੰਟੀ ਦਿੰਦੇ ਹਾਂ ਕਿ ਹੱਲ ਵੱਖ-ਵੱਖ ਲਾਗੂਕਰਨਾਂ ਵਿੱਚ ਮਜ਼ਬੂਤ ​​ਹਨ। ਇਹ ਭਰੋਸੇਯੋਗਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ, ਉਹਨਾਂ ਨੂੰ ਵੱਡੇ ਪੱਧਰ 'ਤੇ ਪੈਦਾ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਹਰੇਕ ਦਰਾਜ਼ ਲਾਕ ਦੀ ਜਾਂਚ ਕਰਨ ਦੇ ਸਮਾਨ ਹੈ। ਇਹ ਵਿਧੀਆਂ ਉਜਾਗਰ ਕਰਦੀਆਂ ਹਨ ਕਿ ਕਿਵੇਂ TypeScript ਦੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਮਾਪਯੋਗਤਾ ਅਤੇ ਟਾਈਪ ਸੁਰੱਖਿਆ ਨੂੰ ਕਾਇਮ ਰੱਖਦੇ ਹੋਏ ਗੁੰਝਲਦਾਰ ਲੋੜਾਂ ਨੂੰ ਸ਼ਾਨਦਾਰ ਢੰਗ ਨਾਲ ਸੰਭਾਲ ਸਕਦੀਆਂ ਹਨ।

ਸੂਚਕਾਂਕ ਦਸਤਖਤਾਂ ਲਈ ਟਾਈਪਸਕ੍ਰਿਪਟ ਐਬਸਟਰੈਕਟ ਕਲਾਸ ਡਿਜ਼ਾਈਨ ਵਿੱਚ ਸੁਧਾਰ ਕਰਨਾ

ਹੱਲ 1: TypeScript ਵਿੱਚ ਬਿਹਤਰ ਸਕੇਲੇਬਿਲਟੀ ਅਤੇ ਘੱਟ ਡੁਪਲੀਕੇਸ਼ਨ ਲਈ ਇੱਕ ਮੈਪਡ ਕਿਸਮ ਦੀ ਵਰਤੋਂ ਕਰਨਾ।

export abstract class BaseAPI {
  static readonly [key: string]: ApiCall<unknown> | Record<string, ApiCall<unknown>> | undefined | (() => string);
  static getChannel(): string {
    return 'Base Channel';
  }
}

export class TransactionAPI extends BaseAPI {
  static readonly CREATE: ApiCall<Transaction> = {
    method: 'POST',
    endpoint: 'transaction',
    response: {} as ApiResponse<Transaction>,
  };
}

export class FileAPI extends BaseAPI {
  static readonly CREATE: ApiCall<File> = {
    method: 'POST',
    endpoint: 'file',
    response: {} as ApiResponse<File>,
  };
}

ਸਜਾਵਟ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ API ਕਲਾਸ ਡਿਜ਼ਾਈਨ ਨੂੰ ਸਟ੍ਰੀਮਲਾਈਨ ਕਰਨਾ

ਹੱਲ 2: ਸੂਚਕਾਂਕ ਦਸਤਖਤ ਬਣਾਉਣ ਲਈ ਸਜਾਵਟ ਕਰਨ ਵਾਲਿਆਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ।

function WithIndexSignature<T extends { new (...args: any[]): {} }>(constructor: T) {
  return class extends constructor {
    static readonly [key: string]: ApiCall<unknown> | Record<string, ApiCall<unknown>> | undefined | (() => string);
  };
}

@WithIndexSignature
export class TransactionAPI extends BaseAPI {
  static readonly CREATE: ApiCall<Transaction> = {
    method: 'POST',
    endpoint: 'transaction',
    response: {} as ApiResponse<Transaction>,
  };
}

@WithIndexSignature
export class FileAPI extends BaseAPI {
  static readonly CREATE: ApiCall<File> = {
    method: 'POST',
    endpoint: 'file',
    response: {} as ApiResponse<File>,
  };
}

API ਐਂਡਪੁਆਇੰਟ ਐਕਸਟਰੈਕਸ਼ਨ ਲਈ ਯੂਨਿਟ ਟੈਸਟ ਸ਼ਾਮਲ ਕਰਨਾ

ਹੱਲ 3: ਲਾਗੂ ਕਰਨ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਜੇਸਟ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਯੂਨਿਟ ਟੈਸਟਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ।

import { ApiManager, TransactionAPI, FileAPI } from './api-manager';

describe('ApiManager', () => {
  it('should extract endpoints from TransactionAPI', () => {
    const endpoints = ApiManager['getEndpoints'](TransactionAPI);
    expect(endpoints).toContain('transaction');
  });

  it('should extract endpoints from FileAPI', () => {
    const endpoints = ApiManager['getEndpoints'](FileAPI);
    expect(endpoints).toContain('file');
  });

  it('should validate endpoint safety', () => {
    const isSafe = ApiManager.isEndpointSafe('transaction');
    expect(isSafe).toBe(true);
  });
});

ਡਾਇਨਾਮਿਕ ਇੰਡੈਕਸ ਹਸਤਾਖਰਾਂ ਨਾਲ ਟਾਈਪਸਕ੍ਰਿਪਟ ਲਚਕਤਾ ਨੂੰ ਵਧਾਉਣਾ

TypeScript ਵਿੱਚ API ਮੈਨੇਜਰ ਵਰਗੇ ਗੁੰਝਲਦਾਰ ਸਿਸਟਮਾਂ ਨਾਲ ਕੰਮ ਕਰਦੇ ਸਮੇਂ, ਕਿਸਮ ਦੀ ਸੁਰੱਖਿਆ ਅਤੇ ਲਚਕਤਾ ਵਿਚਕਾਰ ਸੰਤੁਲਨ ਬਣਾਉਣਾ ਜ਼ਰੂਰੀ ਹੈ। ਇੱਕ ਅਕਸਰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕੀਤੀ ਗਈ ਰਣਨੀਤੀ ਸਬ-ਕਲਾਸਾਂ ਵਿੱਚ ਇਕਸਾਰਤਾ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਐਬਸਟਰੈਕਟ ਕਲਾਸਾਂ ਵਿੱਚ ਡਾਇਨਾਮਿਕ ਇੰਡੈਕਸ ਹਸਤਾਖਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੀ ਹੈ। ਇਹ ਪਹੁੰਚ ਨਾ ਸਿਰਫ਼ ਕਈ ਤਰ੍ਹਾਂ ਦੇ API ਅੰਤਮ ਬਿੰਦੂਆਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ ਸਗੋਂ ਵਿਕਾਸਕਾਰਾਂ ਨੂੰ ਸਾਫ਼-ਸੁਥਰੇ ਅਤੇ ਵਧੇਰੇ ਸਕੇਲੇਬਲ ਕੋਡਬੇਸ ਨੂੰ ਬਣਾਈ ਰੱਖਣ ਦੀ ਵੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਐਬਸਟ੍ਰੈਕਟ `BaseAPI` ਕਲਾਸ ਵਿੱਚ ਇੱਕ ਸਿੰਗਲ ਦਸਤਖਤ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਕੇ, ਤੁਸੀਂ ਇਹ ਯਕੀਨੀ ਬਣਾ ਸਕਦੇ ਹੋ ਕਿ ਸਾਰੇ ਉਪ-ਕਲਾਸ ਜਿਵੇਂ ਕਿ `TransactionAPI` ਅਤੇ `FileAPI` ਕੋਡ ਨੂੰ ਡੁਪਲੀਕੇਟ ਕੀਤੇ ਬਿਨਾਂ ਇੱਕੋ ਨਿਯਮਾਂ ਦੀ ਪਾਲਣਾ ਕਰਦੇ ਹਨ। 📚

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

ਅੰਤ ਵਿੱਚ, ਇਸ ਢਾਂਚੇ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਟੈਸਟਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨਾ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਕਦਮ ਹੈ। ਜੇਸਟ ਵਰਗੇ ਫਰੇਮਵਰਕ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਨ ਕਿ ਅੰਤਮ ਬਿੰਦੂਆਂ ਨੂੰ ਕੱਢਣ ਅਤੇ ਰਜਿਸਟਰੀ ਐਂਟਰੀਆਂ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਤੁਹਾਡਾ ਤਰਕ ਨਿਰਵਿਘਨ ਕੰਮ ਕਰਦਾ ਹੈ। ਮਜਬੂਤ ਟੈਸਟਿੰਗ ਦੇ ਨਾਲ, ਡਿਵੈਲਪਰ ਭਰੋਸੇ ਨਾਲ ਰੀਫੈਕਟਰ ਕੋਡ ਕਰ ਸਕਦੇ ਹਨ, ਇਹ ਜਾਣਦੇ ਹੋਏ ਕਿ ਉਹਨਾਂ ਦੀਆਂ ਤਬਦੀਲੀਆਂ ਗਲਤੀਆਂ ਪੇਸ਼ ਨਹੀਂ ਹੋਣਗੀਆਂ। ਇਹ ਉਜਾਗਰ ਕਰਦਾ ਹੈ ਕਿ ਕਿਵੇਂ ਠੋਸ ਟੈਸਟਿੰਗ ਅਭਿਆਸਾਂ ਨਾਲ TypeScript ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦਾ ਸੁਮੇਲ ਕਰਨ ਨਾਲ ਇਕਸੁਰਤਾਪੂਰਣ ਵਿਕਾਸ ਕਾਰਜ ਪ੍ਰਵਾਹ ਹੁੰਦਾ ਹੈ, ਛੋਟੇ ਪੈਮਾਨੇ ਦੇ ਪ੍ਰੋਜੈਕਟਾਂ ਅਤੇ ਐਂਟਰਪ੍ਰਾਈਜ਼-ਪੱਧਰ ਦੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਦੋਵਾਂ ਨੂੰ ਪੂਰਾ ਕਰਦਾ ਹੈ। TypeScript ਦੀਆਂ ਸ਼ਕਤੀਸ਼ਾਲੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦਾ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਲਾਭ ਉਠਾ ਕੇ, ਤੁਸੀਂ ਨਾ ਸਿਰਫ਼ ਤਤਕਾਲੀ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰ ਰਹੇ ਹੋ, ਸਗੋਂ ਇੱਕ ਲਚਕੀਲੇ ਅਤੇ ਸਕੇਲੇਬਲ ਸਿਸਟਮ ਲਈ ਆਧਾਰ ਵੀ ਬਣਾ ਰਹੇ ਹੋ।

TypeScript ਸੂਚਕਾਂਕ ਦਸਤਖਤਾਂ ਬਾਰੇ ਆਮ ਸਵਾਲ

  1. TypeScript ਵਿੱਚ ਇੱਕ ਸੂਚਕਾਂਕ ਹਸਤਾਖਰ ਕੀ ਹੈ?
  2. ਇੱਕ ਸੂਚਕਾਂਕ ਦਸਤਖਤ ਤੁਹਾਨੂੰ ਕਿਸੇ ਵਸਤੂ ਲਈ ਕੁੰਜੀਆਂ ਅਤੇ ਮੁੱਲਾਂ ਦੀ ਕਿਸਮ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, static readonly [key: string]: ApiCall<unknown> ਲਾਗੂ ਕਰਦਾ ਹੈ ਕਿ ਸਾਰੀਆਂ ਕੁੰਜੀਆਂ ਇੱਕ ਖਾਸ ਕਿਸਮ ਦੇ ਮੁੱਲਾਂ ਵਾਲੀਆਂ ਸਤਰ ਹਨ।
  3. ਸਾਨੂੰ ਐਬਸਟਰੈਕਟ ਕਲਾਸਾਂ ਵਿੱਚ ਸੂਚਕਾਂਕ ਦਸਤਖਤਾਂ ਦੀ ਕਿਉਂ ਲੋੜ ਹੈ?
  4. ਐਬਸਟ੍ਰੈਕਟ ਕਲਾਸਾਂ ਸਾਰੇ ਉਪ-ਕਲਾਸਾਂ ਲਈ ਇਕਸਾਰ ਕਿਸਮ ਦੀ ਪਰਿਭਾਸ਼ਾ ਪ੍ਰਦਾਨ ਕਰਨ ਲਈ ਸੂਚਕਾਂਕ ਦਸਤਖਤਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੀਆਂ ਹਨ, ਇਕਸਾਰ ਵਿਹਾਰ ਅਤੇ ਕਿਸਮ ਦੀ ਸੁਰੱਖਿਆ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੀਆਂ ਹਨ।
  5. ਕੀ ਸਜਾਵਟ ਕਰਨ ਵਾਲੇ ਕੋਡ ਡੁਪਲੀਕੇਸ਼ਨ ਨੂੰ ਘਟਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦੇ ਹਨ?
  6. ਹਾਂ, ਸਜਾਵਟ ਕਰਨ ਵਾਲੇ ਪਸੰਦ ਕਰਦੇ ਹਨ @WithIndexSignature ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਸੂਚਕਾਂਕ ਦਸਤਖਤਾਂ ਨੂੰ ਇੰਜੈਕਟ ਕਰੋ, ਹਰ ਉਪ-ਕਲਾਸ ਵਿੱਚ ਉਹਨਾਂ ਨੂੰ ਹੱਥੀਂ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨ ਦੀ ਲੋੜ ਨੂੰ ਘਟਾਉਂਦੇ ਹੋਏ।
  7. ਵਰਤਣ ਦਾ ਕੀ ਫਾਇਦਾ ਹੈ Record<string, ApiCall<unknown>>?
  8. ਇਹ ਆਬਜੈਕਟ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨ ਲਈ ਇੱਕ ਲਚਕਦਾਰ ਪਰ ਜ਼ੋਰਦਾਰ ਢੰਗ ਨਾਲ ਟਾਈਪ ਕੀਤਾ ਤਰੀਕਾ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਜੋ ਕਿ API ਅੰਤਮ ਬਿੰਦੂਆਂ ਵਰਗੇ ਗੁੰਝਲਦਾਰ ਸਕੀਮਾਂ ਦੇ ਪ੍ਰਬੰਧਨ ਲਈ ਆਦਰਸ਼ ਹੈ।
  9. ਟੈਸਟ ਇੱਕ API ਮੈਨੇਜਰ ਵਿੱਚ ਐਂਡਪੁਆਇੰਟ ਐਕਸਟਰੈਕਸ਼ਨ ਨੂੰ ਕਿਵੇਂ ਪ੍ਰਮਾਣਿਤ ਕਰ ਸਕਦੇ ਹਨ?
  10. ਵਰਗੇ ਟੈਸਟ expect().toContain() ਪੁਸ਼ਟੀ ਕਰੋ ਕਿ ਰਜਿਸਟਰੀ ਵਿੱਚ ਖਾਸ ਅੰਤਮ ਬਿੰਦੂ ਮੌਜੂਦ ਹਨ, ਉਮੀਦ ਅਨੁਸਾਰ API ਮੈਨੇਜਰ ਫੰਕਸ਼ਨ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹੋਏ।

ਸਟ੍ਰੀਮਲਾਈਨਿੰਗ ਟਾਈਪਸਕ੍ਰਿਪਟ API ਕਲਾਸ ਡਿਜ਼ਾਈਨ

'TransactionAPI' ਅਤੇ 'FileAPI' ਵਰਗੇ ਉਪ-ਕਲਾਸਾਂ ਵਿੱਚ ਸੂਚਕਾਂਕ ਦਸਤਖਤਾਂ ਨੂੰ ਸੰਭਾਲਣਾ 'ਬੇਸ ਏਪੀਆਈ' ਕਲਾਸ ਵਿੱਚ ਤਰਕ ਨੂੰ ਕੇਂਦਰਿਤ ਕਰਕੇ ਸਰਲ ਬਣਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। ਸਜਾਵਟ ਕਰਨ ਵਾਲੇ ਅਤੇ ਮੈਪਡ ਕਿਸਮਾਂ ਵਰਗੀਆਂ ਉੱਨਤ ਤਕਨੀਕਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਤੁਸੀਂ ਇਕਸਾਰਤਾ ਅਤੇ ਕਿਸਮ ਦੀ ਸੁਰੱਖਿਆ ਨੂੰ ਕਾਇਮ ਰੱਖਦੇ ਹੋਏ ਦੁਹਰਾਉਣ ਵਾਲੇ ਕੋਡ ਨੂੰ ਖਤਮ ਕਰ ਸਕਦੇ ਹੋ। ਇਹ ਗੁੰਝਲਦਾਰ ਪ੍ਰਣਾਲੀਆਂ ਨੂੰ ਸਕੇਲ ਕਰਨ ਦਾ ਇੱਕ ਕੁਸ਼ਲ ਤਰੀਕਾ ਹੈ। 🚀

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

ਸਰੋਤ ਅਤੇ ਹਵਾਲੇ
  1. TypeScript ਸੂਚਕਾਂਕ ਦਸਤਖਤਾਂ ਲਈ ਵਿਸਤ੍ਰਿਤ ਵਿਆਖਿਆ ਅਤੇ ਕੋਡ ਉਦਾਹਰਨਾਂ ਇਸ ਵਿੱਚ ਸਾਂਝੇ ਕੀਤੇ ਮੂਲ ਕੋਡ ਤੋਂ ਖਿੱਚੀਆਂ ਗਈਆਂ ਸਨ। ਪਲੇਕੋਡ ਪ੍ਰੋਜੈਕਟ .
  2. TypeScript ਐਬਸਟਰੈਕਟ ਕਲਾਸਾਂ ਅਤੇ ਸਜਾਵਟ ਕਰਨ ਵਾਲਿਆਂ 'ਤੇ ਵਾਧੂ ਜਾਣਕਾਰੀ ਅਧਿਕਾਰੀ ਤੋਂ ਪ੍ਰਾਪਤ ਕੀਤੀ ਗਈ ਸੀ ਟਾਈਪ ਸਕ੍ਰਿਪਟ ਦਸਤਾਵੇਜ਼ .
  3. ਗਤੀਸ਼ੀਲ ਕਿਸਮ ਦੀਆਂ ਪਰਿਭਾਸ਼ਾਵਾਂ ਅਤੇ ਟੈਸਟਿੰਗ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਅਭਿਆਸ ਇਸ ਵਿਆਪਕ ਗਾਈਡ ਤੋਂ ਲਏ ਗਏ ਸਨ FreeCodeCamp .