TypeScript आधुनिक डेवलपर के लिए क्यों ज़रूरी है?
\nअगर आपने यह लेख खोला है, तो आप शायद जानते हैं कि TypeScript सिर्फ 'JavaScript का एक्सटेंशन' नहीं है, बल्कि एक पूर्ण टूल है जो आपके प्रोडक्शन सर्वर और नसों को बचाता है। 2025 में, लगभग 80% मिड-लेवल और सीनियर वैकेंसी में TypeScript का ज्ञान ज़रूरी है। और यह सिर्फ const a: number = 5 लिखने के बारे में नहीं है। इंटरव्यूअर टाइप सिस्टम, जेनेरिक्स और सुरक्षित आर्किटेक्चर डिज़ाइन करने की आपकी समझ देखना चाहते हैं।
इस लेख में हम TypeScript इंटरव्यू में पूछे जाने वाले सबसे आम सवालों को कवर करेंगे, जो टॉप कंपनियों में वास्तव में पूछे जाते हैं। आपको सिर्फ थ्योरी नहीं, बल्कि TypeScript कोड उदाहरण भी मिलेंगे जिन्हें आप अपने प्रोजेक्ट्स में इस्तेमाल कर सकते हैं। चलिए शुरू करते हैं!
\n\n1. बेसिक: टाइप्स, इंटरफेसेस और उनके बीच अंतर
\nसवालों का पहला सेट फंडामेंटल है। इंटरव्यूअर यह सुनिश्चित करना चाहता है कि आप type और interface में कन्फ्यूज़ न हों।
type और interface का उपयोग कब करें?
\nयह एक क्लासिक सवाल है। एक सरल नियम याद रखें:
\n- \n
- Interface — उन ऑब्जेक्ट्स के लिए जिन्हें एक्सटेंड किया जा सकता है (declaration merging)। API, DTO, और कम्पोनेंट प्रॉप्स के लिए उपयोग करें। \n
- Type — यूनियन, इंटरसेक्शन, प्रिमिटिव और टपल के लिए उपयोग करें। \n
एक वास्तविक इंटरव्यू का उदाहरण:
\n// Interface — एक्सटेंडेबल\ninterface User {\n id: number;\n name: string;\n}\n\ninterface AdminUser extends User {\n role: 'admin';\n}\n\n// Type — यूनियन\ntype Status = 'active' | 'inactive' | 'banned';\ntype ApiResponse<T> = {\n data: T;\n error?: string;\n};\nमहत्वपूर्ण: कभी न कहें 'interface बेहतर है क्योंकि यह तेज़ है'। परफॉरमेंस का अंतर बहुत छोटा है। मुख्य बात सिमैंटिक्स है।
\n\n2. जेनेरिक्स: इंटरव्यू में शर्मिंदगी से कैसे बचें
\nTypeScript में जेनेरिक्स का विषय जूनियर्स की अकिलीज़ हील है। इंटरव्यूअर को अक्सर एक फंक्शन लिखने के लिए कहना पसंद है जो एक ऐरे लेता है और सही टाइप के साथ पहला एलिमेंट लौटाता है।
\nजेनेरिक फंक्शन लिखना
\nfunction getFirst<T>(arr: T[]): T | undefined {\n return arr[0];\n}\n\nconst num = getFirst([1, 2, 3]); // number\nconst str = getFirst(['a', 'b']); // string\nअब इसे थोड़ा कठिन बनाते हैं — extends के साथ जेनेरिक को सीमित करना:
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {\n return obj[key];\n}\n\nconst user = { name: 'Alice', age: 30 };\ngetProperty(user, 'name'); // OK: string\ngetProperty(user, 'email'); // Error: 'email' keyof में नहीं है\nयह पैटर्न React + TypeScript के हर दूसरे प्रोजेक्ट में मिलता है। अपने प्रोजेक्ट्स में TypeScript जेनेरिक्स लिखने का अभ्यास ज़रूर करें।
\n\n3. Utility Types: आपका गुप्त हथियार
\nबिल्ट-इन यूटिलिटी टाइप्स का ज्ञान प्रोफेशनलिज़्म की निशानी है। इंटरव्यूअर पूछ सकता है: 'सभी फील्ड्स को ऑप्शनल कैसे बनाएं?' या 'केवल इंटरफेस का एक हिस्सा कैसे चुनें?'।
\nटॉप-5 utility types जो आपको जानने चाहिए
\n- \n
Partial<T>— सभी फील्ड्स ऑप्शनल हो जाते हैं; \n Required<T>— सभी फील्ड्स अनिवार्य हो जाते हैं; \n Pick<T, K>— केवल निर्दिष्ट कीज़ चुनता है; \n Omit<T, K>— निर्दिष्ट कीज़ को हटाता है; \n Record<K, V>— कीज़ K और वैल्यू V के साथ ऑब्जेक्ट टाइप बनाता है। \n
एक उदाहरण जो इंटरव्यू में अक्सर दिया जाता है:
\ninterface Todo {\n title: string;\n description: string;\n completed: boolean;\n createdAt: Date;\n}\n\n// Todo का केवल कुछ हिस्सा अपडेट करना\nfunction updateTodo(todo: Todo, fieldsToUpdate: Partial<Todo>) {\n return { ...todo, ...fieldsToUpdate };\n}\n\n// एक डिक्शनरी बनाना\nconst