TypeScript में कोड रिव्यू: क्या जाँचें और व्यवहार में फीडबैक कैसे दें
\n\nकोड रिव्यू सिर्फ एक औपचारिकता नहीं है, बल्कि कोड की गुणवत्ता बढ़ाने का एक शक्तिशाली उपकरण है। TypeScript में, अपनी समृद्ध टाइप प्रणाली के साथ, रिव्यू विशेष रूप से प्रभावी हो सकता है। इस लेख में, हम चर्चा करेंगे कि TypeScript कोड की जाँच करते समय किन बातों पर ध्यान देना चाहिए, और फीडबैक कैसे दें ताकि वह उपयोगी हो, न कि आपत्तिजनक। सभी उदाहरण वास्तविक कोड पर आधारित हैं।
\n\n1. टाइप्स और एनोटेशन: `any` से बचें और सख्ती का उपयोग करें
\n\nTypeScript कोड के रिव्यू में सबसे पहली चीज़ जो ध्यान खींचती है, वह है टाइप्स। TypeScript को कंपाइलेशन के समय त्रुटियों को पकड़ने के लिए बनाया गया है, इसलिए any एक लाल झंडा है।
क्या जाँचें:
\n- \n
anyकी उपस्थिति। प्रत्येकanyको उचित ठहराया जाना चाहिए। यदि यह JS से माइग्रेशन है तो ठीक है, लेकिन नए कोड में नहीं। \n - टाइप्स की सटीकता। जहाँ
enumयाunion typeकी आवश्यकता हो, वहाँstringका उपयोग न करें। \n - अनावश्यक टाइपिंग। TypeScript टाइप्स का अनुमान लगा सकता है।
const x: number = 5न लिखें —const x = 5लिखें। \n - सख्त सेटिंग्स। जाँचें कि
tsconfig.jsonमेंstrict: true,noImplicitAny,strictNullChecksशामिल हैं। \n
खराब कोड का उदाहरण:
\nfunction processData(data: any) {\n return data.name.toLowerCase();\n}\n\nकैसे सुधारें:
\ninterface User {\n name: string;\n}\n\nfunction processData(data: User): string {\n return data.name.toLowerCase();\n}\n\nफीडबैक कैसे दें:
\n"आप `any` का उपयोग कर रहे हैं, यह बुरा है" कहने के बजाय कहें: "यहाँ any टाइप चेकिंग को बंद कर देता है। आइए User इंटरफ़ेस को परिभाषित करें — इससे कोड की सुरक्षा और पठनीयता बढ़ेगी।"
2. null और undefined के साथ काम करना: strictNullChecks जीवन बचाता है
\n\nCannot read property of undefined त्रुटियाँ क्लासिक हैं। TypeScript strictNullChecks के साथ उनसे बचने में मदद करता है, लेकिन केवल तभी जब डेवलपर nullable-मानों को सही ढंग से संभालता है।
क्या जाँचें:
\n- \n
- प्रॉपर्टी तक पहुँचने से पहले null/undefined की जाँच करना। \n
- optional chaining (
?.) का उपयोग — यह आधुनिक और सुरक्षित है। \n !ऑपरेटर (non-null assertion) — इसका उपयोग केवल तभी करें जब 100% सुनिश्चित हों कि मान null नहीं है। बेहतर होगा कि इसे स्पष्ट जाँच से बदल दें। \n - डिफ़ॉल्ट मानों के लिए
||के बजाय??(nullish coalescing) का सही उपयोग करना। \n
खराब कोड का उदाहरण:
\nfunction getCity(user: User | null): string {\n return user!.address!.city; // खतरनाक!\n}\n\nकैसे सुधारें:
\nfunction getCity(user: User | null): string {\n return user?.address?.city ?? 'Unknown';\n}\n\nफीडबैक कैसे दें:
\n"यहाँ ! का उपयोग जोखिम भरा है — यदि user null निकला, तो त्रुटि होगी। आइए इसे ?. और ?? से बदलें — यह सुरक्षित और पठनीय है।"
3. जेनेरिक्स और उपयोगिता टाइप्स: बिना आवश्यकता के जटिल न बनाएँ
\n\nजेनेरिक्स एक शक्तिशाली सुविधा है, लेकिन इसे आसानी से अत्यधिक जटिल बनाया जा सकता है। रिव्यूअर को लचीलेपन और पठनीयता के बीच संतुलन पर ध्यान देना चाहिए।
\n\nक्या जाँचें:
\n- \n
- अत्यधिक जटिलता। यदि जेनेरिक का उपयोग केवल एक बार किया गया है, तो संभवतः इसकी आवश्यकता नहीं है। \n
extendsका सही उपयोग — जेनेरिक्स को सीमित करें ताकि वे सब कुछ स्वीकार न करें। \n - उपयोगिता टाइप्स (
Partial,Pick,Omit,Record) — इनका उपयोग कोड को सरल बनाता है।