TypeScript क्या है और मुझे JavaScript के बजाय इसका उपयोग क्यों करना चाहिए?
\n\nयदि आपने कभी Stack Overflow पर नज़र डाली है या अनुभवी फ्रंटएंड डेवलपर्स से बात की है, तो आपने निश्चित रूप से यह प्रश्न सुना होगा। इसने हजारों बार देखा गया है और सैकड़ों उत्तर मिले हैं। लेकिन आइए ईमानदार रहें: अधिकांश स्पष्टीकरण या तो बहुत जटिल हैं या फिर बहुत सतही।
\n\nआज हम इस विषय को इस तरह से समझेंगे जैसे मैं आपके साथ एक ही मेज पर बैठा हूँ। कठिन शब्दों के बिना, वास्तविक उदाहरणों और एक ईमानदार उत्तर के साथ: क्या एक शुरुआती को JavaScript के बजाय TypeScript सीखना चाहिए?
\n\nऔर हाँ, यदि आप Python से आए हैं - तो आप घर जैसा महसूस करेंगे। TypeScript, टाइप एनोटेशन वाले Python के समान ही है, बस थोड़ा सख्त है।
\n\nसंक्षिप्त इतिहास: TypeScript क्यों बनाया गया
\n\nJavaScript एक अद्भुत भाषा है। यह हर जगह काम करती है: ब्राउज़र में, सर्वर पर (Node.js), यहाँ तक कि अंतरिक्ष यान में भी (मज़ाक है, लेकिन लगभग)। लेकिन इसकी एक बड़ी समस्या है: यह बहुत लचीली है।
\n\nकल्पना करें कि आप JavaScript में कोड लिख रहे हैं:
\n\nfunction add(a, b) {\n return a + b;\n}\n\nconsole.log(add(5, 10)); // 15\nconsole.log(add("5", 10)); // "510" — ओह!\nconsole.log(add(null, 10)); // 10 — क्या?\n\n\nदेखा? एक ही फ़ंक्शन तर्कों के प्रकारों के आधार पर अलग-अलग व्यवहार करता है। एक छोटी स्क्रिप्ट के लिए यह कोई समस्या नहीं है। लेकिन जब आपका प्रोजेक्ट 50,000 लाइनों के कोड तक बढ़ जाता है, तो ऐसे "आश्चर्य" डिबगिंग के घंटों में बदल जाते हैं।
\n\n2012 में, Microsoft कंपनी ने TypeScript जारी किया - JavaScript के ऊपर एक परत जो स्थिर टाइपिंग और अन्य सुविधाएँ जोड़ती है। संक्षेप में, यह वही JavaScript है, लेकिन "मूर्ख-सुरक्षित" संस्करण के साथ।
\n\nTypeScript बनाम JavaScript: उदाहरणों के साथ मुख्य अंतर
\n\n1. टाइपिंग - मुख्य तुरुप का पत्ता
\n\nJavaScript में आप लिख सकते हैं:
\n\nlet user = "अन्ना";\nuser = 42; // JavaScript को कोई आपत्ति नहीं\nuser = true; // यह भी ठीक है\n\n\nTypeScript में आप स्पष्ट रूप से प्रकार बताते हैं:
\n\nlet user: string = "अन्ना";\nuser = 42; // त्रुटि! Type 'number' is not assignable to type 'string'\n\n\nऔर यह अनगिनत बगों से बचाता है। खासकर जब आप एक टीम में काम कर रहे हों या एक महीने बाद अपने कोड पर वापस आ रहे हों।
\n\n2. इंटरफ़ेस - ऑब्जेक्ट के लिए ब्लूप्रिंट की तरह
\n\nJavaScript में आप किसी भी तरह से ऑब्जेक्ट बना सकते हैं:
\n\nfunction greet(person) {\n console.log(`नमस्ते, ${person.name}! तुम ${person.age} साल के हो।`);\n}\n\ngreet({ name: "इवान", age: 25 }); // काम करता है\ngreet({ name: "मारिया" }); // undefined age — लेकिन कोड चलेगा\ngreet({ fullName: "पीटर", years: 30 }); // undefined name — बग!\n\n\nTypeScript में आप एक इंटरफ़ेस बनाते हैं - एक अनुबंध जिसका ऑब्जेक्ट को पालन करना होता है:
\n\ninterface Person {\n name: string;\n age: number;\n}\n\nfunction greet(person: Person) {\n console.log(`नमस्ते, ${person.name}! तुम ${person.age} साल के हो।`);\n}\n\ngreet({ name: "इवान", age: 25 }); // ✅\ngreet({ name: "मारिया" }); // ❌ Property 'age' is missing\ngreet({ fullName: "पीटर", years: 30 }); // ❌ यह Person नहीं है\n\n\nअब आप गलती से गलत ऑब्जेक्ट पास नहीं कर सकते। कंपाइलर कोड चलने से पहले त्रुटि पकड़ लेगा।
\n\n3. ऑटो-कम्प्लीशन और दस्तावेज़ीकरण
\n\nजब आप एडिटर (VS Code, WebStorm) में TypeScript का उपयोग करते हैं, तो आपको मिलता है:
\n- \n
- ऑटो-कम्प्लीशन — एडिटर गुण और विधियाँ सुझाता है \n
- कोड में ही दस्तावेज़ीकरण — फ़ंक्शन पर होवर करने पर पता चलता है कि यह कौन से पैरामीटर लेता है \n
- चलते-फिरते त्रुटियाँ — चलाने से पहले लाल रेखांकन \n
यह कागज़ के नक्शे के बजाय नेविगेटर वाली कार चलाने जैसा है।
\n\nशुरुआती भी TypeScript क्यों चुन रहे हैं?
\n\nStack Overflow और वास्तविक प्रोजेक्ट्स में डेवलपर्स यही कहते हैं:
\n\nप्रोडक्शन में कम बग
\nअनुसंधान