TypeScript
टाइपस्क्रिप्ट का उपयोग क्यों और कब किया जाता है
खोज…
परिचय
यदि आप सामान्य रूप से टाइप सिस्टम के लिए तर्क खोजते हैं, तो आप टाइपस्क्रिप्ट से खुश होंगे।
यह जावास्क्रिप्ट पारिस्थितिकी तंत्र के लिए प्रकार प्रणाली (सुरक्षा, पठनीयता, बेहतर टूलींग) के कई फायदे लाता है। यह कुछ प्रकार की प्रणाली (अतिरिक्त जटिलता और अपूर्णता) की कमियों से भी ग्रस्त है।
टिप्पणियों
टाइप किए गए बनाम अप्रकाशित भाषाओं के गुणों की दशकों से बहस चल रही है। स्थिर प्रकार के तर्क में शामिल हैं:
- सुरक्षा: प्रकार प्रणालियाँ बिना कोड को चलाए कई त्रुटियों को जल्दी पकड़ सकती हैं। टाइप प्रोग्रामिंग को कम प्रोग्रामिंग त्रुटियों की अनुमति देने के लिए कॉन्फ़िगर किया जा सकता है
- पठनीयता: स्पष्ट प्रकार मनुष्यों को समझने के लिए कोड को आसान बनाते हैं। जैसा कि फ्रेड ब्रूक्स ने लिखा है , "मुझे अपने फ्लोचार्ट्स दिखाओ और अपनी टेबल्स को छुपाओ, और मैं रहस्य बना रहूँगा। मुझे अपनी टेबल्स दिखाओ, और मुझे आमतौर पर तुम्हारी फ़्लोचार्ट्स की ज़रूरत नहीं होगी; वे स्पष्ट हो जाएँगे।"
- टूलींग: प्रकार सिस्टम कंप्यूटर को समझने के लिए कोड को आसान बनाते हैं। इससे आईडीई और लिंटर जैसे उपकरण अधिक शक्तिशाली हो सकते हैं।
- प्रदर्शन: प्रकार सिस्टम रनटाइम प्रकार की जाँच की आवश्यकता को कम करके कोड को तेजी से चलाते हैं।
टाइपस्क्रिप्ट का आउटपुट अपने प्रकारों से स्वतंत्र होने के कारण , टाइपस्क्रिप्ट का प्रदर्शन पर कोई प्रभाव नहीं पड़ता है। टाइपस्क्रिप्ट का उपयोग करने का तर्क अन्य तीन लाभों पर टिका है।
प्रकार सिस्टम के खिलाफ तर्क में शामिल हैं:
- जोड़ा गया जटिलता: टाइप सिस्टम भाषा रनटाइम की तुलना में अधिक जटिल हो सकता है जो वे वर्णन करते हैं। उच्च क्रम के कार्यों को सही ढंग से लागू करना आसान है लेकिन टाइप करना मुश्किल है । प्रकार की परिभाषाओं से निपटने से बाहरी पुस्तकालयों का उपयोग करने में अतिरिक्त बाधाएं पैदा होती हैं।
- जोड़ा वर्बोसिटी: प्रकार एनोटेशन आपके कोड में बॉयलरप्लेट जोड़ सकते हैं, जिससे अंतर्निहित तर्क का पालन करना कठिन हो जाता है।
- धीमी गति से चलना: एक बिल्ड स्टेप को शुरू करने से, टाइपस्क्रिप्ट एडिट / सेव / रीलोड चक्र को धीमा कर देता है।
- अपूर्णता: एक प्रकार की प्रणाली ध्वनि और पूर्ण दोनों नहीं हो सकती। सही प्रोग्राम हैं जो टाइपस्क्रिप्ट अनुमति नहीं देता है। और प्रोग्राम जो टाइपस्क्रिप्ट स्वीकार करते हैं उसमें अभी भी बग हो सकते हैं। एक प्रकार की प्रणाली परीक्षण की आवश्यकता को कम नहीं करती है। यदि आप टाइपस्क्रिप्ट का उपयोग करते हैं, तो आपको नई ECMAScript भाषा सुविधाओं का उपयोग करने के लिए अधिक समय तक इंतजार करना पड़ सकता है।
टाइपस्क्रिप्ट इन सभी मुद्दों को संबोधित करने के कुछ तरीके प्रदान करता है:
- जटिलता जोड़ा गया। यदि किसी प्रोग्राम का टाइपिंग भाग बहुत कठिन है, तो टाइपस्क्रिप्ट को
any
प्रकार के अपारदर्शी के उपयोग से बड़े पैमाने पर अक्षम किया जा सकता है। बाहरी मॉड्यूल के लिए भी यही सच है। - शब्दशः जोड़ा गया। यह आंशिक रूप से टाइप उपनामों और टाइपस्क्रिप्ट प्रकार की क्षमता के माध्यम से संबोधित किया जा सकता है। स्पष्ट कोड लिखना एक विज्ञान जितना ही एक कला है: कई प्रकार के एनोटेशन को हटा दें और कोड अब मानव पाठकों के लिए स्पष्ट नहीं हो सकता है।
- धीमी गति से चलना: एक निर्माण कदम आधुनिक जेएस विकास में अपेक्षाकृत सामान्य है और टाइपस्क्रिप्ट पहले से ही अधिकांश बिल्ड टूल के साथ एकीकृत है । और यदि टाइपस्क्रिप्ट एक त्रुटि को जल्दी पकड़ता है, तो यह आपको संपूर्ण पुनरावृत्ति चक्र बचा सकता है!
- अपूर्णता। जबकि यह समस्या पूरी तरह से हल नहीं हो सकती है, टाइपस्क्रिप्ट समय के साथ अधिक से अधिक अर्थपूर्ण जावास्क्रिप्ट पैटर्न कैप्चर करने में सक्षम है। हाल के उदाहरणों में टाइपस्क्रिप्ट 2.1 में मैप किए गए प्रकारों को शामिल करना और 2.2 में मिश्रण शामिल हैं ।
सामान्य रूप से टाइप सिस्टम के लिए और इसके विपरीत तर्क टाइपस्क्रिप्ट के लिए समान रूप से लागू होते हैं। टाइपस्क्रिप्ट का उपयोग ओवरहेड को एक नई परियोजना शुरू करने के लिए बढ़ाता है। लेकिन समय के साथ, जैसे-जैसे यह परियोजना आकार में बढ़ती है और अधिक योगदान प्राप्त करती है, आशा है कि इसका उपयोग करने के मामले (सुरक्षा, पठनीयता, टूलींग) मजबूत हो जाते हैं और विपक्ष को पछाड़ देते हैं। यह टाइपस्क्रिप्ट के आदर्श वाक्य में परिलक्षित होता है: "जावास्क्रिप्ट जो तराजू है।"
सुरक्षा
टाइपस्क्रिप्ट स्थिर विश्लेषण के माध्यम से टाइप की त्रुटियों को जल्दी पकड़ता है:
function double(x: number): number {
return 2 * x;
}
double('2');
// ~~~ Argument of type '"2"' is not assignable to parameter of type 'number'.
पठनीयता
टाइपस्क्रिप्ट संपादकों को प्रासंगिक प्रलेखन प्रदान करने में सक्षम बनाता है:
आप कभी नहीं String.prototype.slice
कि क्या String.prototype.slice
(start, stop)
या (start, length)
लेता है!
टूलींग
टाइपस्क्रिप्ट संपादकों को स्वचालित रिफ्लेक्टर करने की अनुमति देता है जो भाषाओं के नियमों से अवगत हैं।
उदाहरण के लिए, विज़ुअल स्टूडियो कोड बाहरी foo
को foo
बिना आंतरिक foo
संदर्भों का नाम बदलने में सक्षम है। यह एक साधारण खोज / प्रतिस्थापन के साथ करना मुश्किल होगा।