शुरुआती TypeScript डेवलपर्स की शीर्ष गलतियाँ: उन्नत स्तर

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

शुरुआती TypeScript डेवलपर्स की शीर्ष गलतियाँ: उन्नत स्तर

\n\n

TypeScript एक शक्तिशाली उपकरण है जो अधिक सुरक्षित और पूर्वानुमानित कोड लिखने में मदद करता है। हालाँकि, JavaScript से TypeScript में संक्रमण, विशेष रूप से उन्नत स्तर पर, अक्सर विशिष्ट गलतियों के साथ होता है। टाइपिंग की मूल बातों से परिचित डेवलपर्स भी जेनेरिक, सशर्त प्रकार और ओवरलोड के साथ काम करते समय सामान्य गलतियाँ करते हैं। इस लेख में, हम उन्नत शुरुआती लोगों की 4 सबसे सामान्य गलतियों का विश्लेषण करेंगे और दिखाएंगे कि उन्हें कैसे ठीक किया जाए।

\n\n

1. Generic का गलत उपयोग: प्रकार की जानकारी का नुकसान

\n\n

सबसे आम गलतियों में से एक है जेनेरिक की बहुत व्यापक या, इसके विपरीत, बहुत संकीर्ण घोषणा। डेवलपर्स अक्सर generic-फंक्शन के अंदर any प्रकार निर्दिष्ट करते हैं, जिससे TypeScript के सभी लाभ समाप्त हो जाते हैं।

\n\n

समस्या

\n
// खराब: फंक्शन any लौटाता है, टाइपिंग खो जाती है\nfunction getProperty(obj: any, key: string): any {\n    return obj[key];\n}\n\nconst user = { name: 'Alice', age: 30 };\nconst value = getProperty(user, 'name'); // value: any
\n\n

समाधान

\n
// अच्छा: प्रकार को संरक्षित करने के लिए generic का उपयोग करें\nfunction getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {\n    return obj[key];\n}\n\nconst user = { name: 'Alice', age: 30 };\nconst value = getProperty(user, 'name'); // value: string
\n\n

महत्वपूर्ण: जेनेरिक के लिए हमेशा extends प्रतिबंधों का उपयोग करें। यह न केवल प्रकारों को संरक्षित करता है, बल्कि IDE में ऑटो-कम्प्लीशन भी प्रदान करता है।

\n\n

2. unknown के बजाय any प्रकार का दुरुपयोग

\n\n

कई शुरुआती डेवलपर्स जहाँ वे तुरंत प्रकार निर्धारित नहीं कर सकते, वहाँ any लगा देते हैं। यह TypeScript के सभी लाभों को नष्ट कर देता है। सही तरीका है unknown का उपयोग करना और फिर प्रकार को संकीर्ण करना।

\n\n

समस्या

\n
// खराब: any कुछ भी करने की अनुमति देता है\nfunction parseData(data: any): void {\n    console.log(data.toUpperCase()); // रनटाइम में त्रुटि, यदि data संख्या है\n    data.someMethod(); // कोई जाँच नहीं\n}
\n\n

समाधान

\n
// अच्छा: unknown को जाँच की आवश्यकता है\nfunction parseData(data: unknown): void {\n    if (typeof data === 'string') {\n        console.log(data.toUpperCase()); // सुरक्षित\n    } else if (Array.isArray(data)) {\n        console.log(data.length);\n    } else {\n        console.log('अज्ञात डेटा प्रकार');\n    }\n}
\n\n

any का उपयोग केवल चरम मामलों में करें (JS से माइग्रेशन या डायनामिक API के साथ काम करना)। बाकी सबके लिए, गार्ड के साथ unknown का उपयोग करें।

\n\n

3. फंक्शन ओवरलोडिंग में त्रुटियाँ (Function Overloads)

\n\n

TypeScript में फंक्शन ओवरलोडिंग एक शक्तिशाली लेकिन कपटी तंत्र है। सामान्य गलती: सिग्नेचर का गलत क्रम या घोषित ओवरलोड के साथ कार्यान्वयन का बेमेल होना।

\n\n

समस्या

\n
// खराब: सिग्नेचर एक-दूसरे के विरोधाभासी हैं\nfunction process(value: string): string;\nfunction process(value: number): number;\nfunction process(value: string | number): string | number {\n    // कार्यान्वयन सभी मामलों को कवर नहीं करता\n    return value.toString(); // हम string लौटाते हैं, जबकि number के लिए number का वादा किया था\n}
\n\n

समाधान

\n
// अच्छा: तर्क का स्पष्ट विभाजन\nfunction process(value: string): string;\nfunction process(value: number): number;\nfunction process(value: string | number): string | number {\n    if (typeof value === 'string') {\n        return value.toUpperCase(); // string लौटाता है\n    } else {\n        return value * 2; // number लौटाता है\n    }\n}\n\nconst result1 = process('hello'); // string\nconst result2 = process(10);      // number
\n\n

सुझाव: हमेशा जाँचें कि फंक्शन का कार्यान्वयन सिग्नेचर में घोषित सभी वेरिएंट को कवर करता है। typeof या कस्टम गार्ड का उपयोग करें।

\n\n

4. सख्त मोड कॉन्फ़िगरेशन को अनदेखा करना

\n\n

कई डेवलपर्स strict: true को सक्षम किए बिना TypeScript का उपयोग करते हैं, जो कई संभावित त्रुटियों को छोड़ देता है। सख्त मोड में strictNullChecks, noImplicitAny, और अन्य महत्वपूर्ण सेटिंग्स शामिल हैं जो कोड को अधिक सुरक्षित बनाती हैं।

\n\n

समस्या

\n
// tsconfig.json में strict: false के साथ\nlet name: string;\nname = null; // कोई त्रुटि नहीं, लेकिन रनटाइम में समस्या हो सकती है
\n\n

समाधान

\n
// tsconfig.json\n{\n    "compilerOptions": {\n        "strict": true,\n        "noImplicitAny": true,\n        "strictNullChecks": true\n    }\n}
\n\n

महत्वपूर्ण: हमेशा strict: true सक्षम करें। यह कई सामान्य गलतियों को रोकता है और कोड की गुणवत्ता में सुधार करता है।

ब्लॉग

पुस्तक अनुशंसाएँ