क्या आप कृपया बता सकते हैं कि टाइपस्क्रिप्ट भाषा क्या है?
यह क्या कर सकता है कि जावास्क्रिप्ट या उपलब्ध पुस्तकालय नहीं कर सकते हैं, जो मुझे इस पर विचार करने का कारण देगा?
क्या आप कृपया बता सकते हैं कि टाइपस्क्रिप्ट भाषा क्या है?
यह क्या कर सकता है कि जावास्क्रिप्ट या उपलब्ध पुस्तकालय नहीं कर सकते हैं, जो मुझे इस पर विचार करने का कारण देगा?
जवाबों:
मैंने मूल रूप से यह उत्तर तब लिखा था जब टाइपस्क्रिप्ट अभी भी गर्म-ऑफ-द-प्रेस था। पांच साल बाद, यह एक ठीक अवलोकन है, लेकिन अधिक गहराई के लिए लोदीविज्क के जवाब को देखें
टाइपस्क्रिप्ट जावास्क्रिप्ट का एक सुपरसेट है जो मुख्य रूप से वैकल्पिक स्थिर टाइपिंग, कक्षाएं और इंटरफेस प्रदान करता है। जैसे ही आप कोड टाइप करते हैं, आम त्रुटियों को दूर करने के लिए एक समृद्ध वातावरण प्रदान करने के लिए IDEs को सक्षम करने के लिए एक बड़ा लाभ है ।
मेरे कहने का अर्थ यह जानने के लिए कि भाषा पर Microsoft का परिचयात्मक वीडियो देखें ।
एक बड़ी जावास्क्रिप्ट परियोजना के लिए, टाइपस्क्रिप्ट को अपनाने से अधिक मजबूत सॉफ्टवेयर हो सकता है, जबकि अभी भी तैनात किया जा सकता है जहां एक नियमित जावास्क्रिप्ट अनुप्रयोग चलेगा।
यह खुला स्रोत है, लेकिन यदि आप एक समर्थित IDE का उपयोग करते हैं, तो आप केवल चतुर Intellisense प्राप्त करते हैं। प्रारंभ में, यह केवल Microsoft का विज़ुअल स्टूडियो था ( मिगुएल डे इकाज़ा से ब्लॉग पोस्ट में भी उल्लेख किया गया था )। इन दिनों, अन्य आईडीई टाइपस्क्रिप्ट समर्थन भी प्रदान करते हैं ।
नहीं है CoffeeScript , लेकिन वास्तव में एक अलग ही उद्देश्य। IMHO, CoffeeScript मनुष्यों के लिए पठनीयता प्रदान करता है, लेकिन टाइपस्क्रिप्ट भी इसके वैकल्पिक स्थैतिक टाइपिंग के माध्यम से उपकरणों के लिए गहरी पठनीयता प्रदान करता है ( थोड़ा और समालोचना के लिए यह हालिया ब्लॉग पोस्ट देखें )। डार्ट भी है लेकिन वह जावास्क्रिप्ट के प्रतिस्थापन पर पूर्ण है (हालांकि यह जावास्क्रिप्ट कोड का उत्पादन कर सकता है )
एक उदाहरण के रूप में, यहां कुछ टाइपस्क्रिप्ट (आप टाइपस्क्रिप्ट प्लेग्राउंड में इसके साथ खेल सकते हैं )
class Greeter {
greeting: string;
constructor (message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
और यहाँ जावास्क्रिप्ट यह उत्पादन होगा
var Greeter = (function () {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return "Hello, " + this.greeting;
};
return Greeter;
})();
ध्यान दें कि टाइपस्क्रिप्ट सदस्य चर और वर्ग विधि मापदंडों के प्रकार को कैसे परिभाषित करता है। जावास्क्रिप्ट में अनुवाद करते समय इसे हटा दिया जाता है, लेकिन आईडीई और कंपाइलर द्वारा त्रुटियों को स्पॉट करने के लिए उपयोग किया जाता है, जैसे कि एक संख्यात्मक प्रकार को कंस्ट्रक्टर में पास करना।
यह उन प्रकारों को संदर्भित करने में भी सक्षम है जिन्हें स्पष्ट रूप से घोषित नहीं किया गया है, उदाहरण के लिए, यह greet()
विधि को एक स्ट्रिंग लौटाता है।
कई ब्राउज़र और IDE, सोर्समैप के माध्यम से प्रत्यक्ष डिबगिंग समर्थन प्रदान करते हैं। अधिक जानकारी के लिए यह स्टैक ओवरफ्लो प्रश्न देखें: Visual Studio के साथ टाइपस्क्रिप्ट कोड डीबग करना
मैंने मूल रूप से यह उत्तर तब लिखा था जब टाइपस्क्रिप्ट अभी भी गर्म-ऑफ-द-प्रेस था। की जाँच करें Lodewijk का जवाब कुछ और वर्तमान विस्तार के लिए इस सवाल का।
टाइपस्क्रिप्ट जावास्क्रिप्ट का एक टाइप किया हुआ सुपरसेट है जो सादे जावास्क्रिप्ट के लिए संकलित करता है - typecriptlang.org ।
जावास्क्रिप्ट एक प्रोग्रामिंग भाषा है जिसे EMCA की तकनीकी समिति 39 द्वारा विकसित किया गया है , जो कई अलग-अलग हितधारकों से बने लोगों का एक समूह है। TC39 ECMA द्वारा होस्ट की गई एक समिति है : एक आंतरिक मानक संगठन। कई अलग-अलग विक्रेताओं (जैसे Google, Microsoft, Oracle, आदि) द्वारा जावास्क्रिप्ट के कई अलग-अलग कार्यान्वयन हैं। जावास्क्रिप्ट का लक्ष्य वेब का लिंगुआ फ्रेंका होना है।
टाइपस्क्रिप्ट जावास्क्रिप्ट भाषा का एक सुपरसेट है जिसमें एक ही ओपन-सोर्स कंपाइलर है और मुख्य रूप से एक एकल विक्रेता द्वारा विकसित किया गया है: Microsoft। टाइपस्क्रिप्ट का लक्ष्य एक प्रकार की प्रणाली के माध्यम से गलतियों को जल्द पकड़ना और जावास्क्रिप्ट विकास को अधिक कुशल बनाना है।
अनिवार्य रूप से टाइपस्क्रिप्ट तीन तरीकों से अपने लक्ष्यों को प्राप्त करता है:
आधुनिक जावास्क्रिप्ट सुविधाओं के लिए समर्थन - ECMAScript मानकों के माध्यम से जावास्क्रिप्ट भाषा (रनटाइम नहीं) को मानकीकृत किया गया है । सभी ब्राउज़र और जावास्क्रिप्ट रनटाइम सभी ECMAScript मानकों की सभी विशेषताओं का समर्थन नहीं करते हैं (यह अवलोकन देखें )। टाइपस्क्रिप्ट नवीनतम ECMAScript सुविधाओं में से कई का उपयोग करने की अनुमति देता है और उन्हें आपके चयन के पुराने ECMAScript लक्ष्यों के लिए अनुवाद करता है ( संकलक विकल्प के तहत संकलन लक्ष्यों की सूची देखें --target
)। इसका मतलब है कि आप सुरक्षित रूप से नए फीचर्स का उपयोग कर सकते हैं, जैसे मॉड्यूल, लैम्ब्डा फ़ंक्शन, क्लासेस, स्प्रेड ऑपरेटर और डिस्ट्रक्ट्यूरिंग, जबकि पुराने ब्राउज़र और जावास्क्रिप्ट रनटाइम के साथ पीछे की ओर संगत।
उन्नत प्रकार की प्रणाली - प्रकार का समर्थन ECMAScript मानक का हिस्सा नहीं है और संभवतः जावास्क्रिप्ट की संकलित प्रकृति के बजाय व्याख्या की गई प्रकृति के कारण कभी नहीं होगा। टाइपस्क्रिप्ट का प्रकार प्रणाली अविश्वसनीय रूप से समृद्ध है और इसमें शामिल हैं: इंटरफेस, एनम, हाइब्रिड प्रकार, जेनरिक, यूनियन / चौराहे प्रकार, एक्सेस मॉडिफायर और बहुत कुछ। टाइपस्क्रिप्ट की आधिकारिक वेबसाइट इन विशेषताओं का अवलोकन करती है। टाइपस्क्रिप्ट की टाइप प्रणाली अधिकांश अन्य टाइप की गई भाषाओं के साथ सम-सामयिक है और कुछ मामलों में यकीनन अधिक शक्तिशाली है।
डेवलपर टूलींग समर्थन - टाइपस्क्रिप्ट के संकलक वृद्धिशील संकलन और आईडीई एकीकरण दोनों का समर्थन करने के लिए एक पृष्ठभूमि प्रक्रिया के रूप में चल सकते हैं, जैसे कि आप अधिक आसानी से नेविगेट कर सकते हैं, समस्याओं की पहचान कर सकते हैं, संभावनाओं का निरीक्षण कर सकते हैं और अपने कोडबेस को रिफलेक्टर कर सकते हैं।
जावास्क्रिप्ट को संकलित करने वाली अन्य भाषाओं की तुलना में टाइपस्क्रिप्ट में एक अद्वितीय दर्शन है। जावास्क्रिप्ट कोड वैध टाइपस्क्रिप्ट कोड है; टाइपस्क्रिप्ट जावास्क्रिप्ट का एक सुपरसेट है। आप अपनी .js
फाइलों को लगभग फाइलों में बदल सकते हैं .ts
और टाइपस्क्रिप्ट (नीचे "जावास्क्रिप्ट इंटरऑपरेबिलिटी देखें") का उपयोग करना शुरू कर सकते हैं। टाइपस्क्रिप्ट फ़ाइलों को पढ़ने योग्य जावास्क्रिप्ट के लिए संकलित किया जाता है, ताकि माइग्रेशन वापस संभव हो और संकलित टाइपस्क्रिप्ट को समझना कठिन न हो। टाइपस्क्रिप्ट जावास्क्रिप्ट की सफलताओं पर अपनी कमजोरियों पर सुधार करते हुए बनाता है।
एक ओर, आपके पास भविष्य के प्रमाण उपकरण हैं जो आधुनिक ECMAScript मानकों को लेते हैं और इसे पुराने जावास्क्रिप्ट संस्करणों में संकलित करते हैं जिसमें Babel सबसे लोकप्रिय है। दूसरी ओर, आपके पास ऐसी भाषाएँ हैं जो पूरी तरह से जावास्क्रिप्ट से भिन्न हो सकती हैं जो जावास्क्रिप्ट को लक्षित करती हैं, जैसे कि कॉफीस्क्रिप्ट, क्लॉजोर, डार्ट, एल्म, हैक्स, स्काला.जैस, और एक संपूर्ण होस्ट अधिक (इस सूची को देखें))। ये भाषाएं, हालांकि वे बेहतर हो सकती हैं जहां जावास्क्रिप्ट का भविष्य कभी भी हो सकता है, गारंटी देने के लिए अपने वायदा के लिए पर्याप्त गोद लेने का जोखिम न उठाएं। इन भाषाओं में से कुछ के लिए अनुभवी डेवलपर्स को खोजने में आपको अधिक परेशानी हो सकती है, हालांकि जो आप पाएंगे वे अक्सर अधिक उत्साही हो सकते हैं। जावास्क्रिप्ट के साथ इंटरोप भी थोड़ा अधिक शामिल हो सकता है, क्योंकि वे जावास्क्रिप्ट से हटाए जाते हैं जो वास्तव में जावास्क्रिप्ट है।
टाइपस्क्रिप्ट इन दो चरम सीमाओं के बीच बैठता है, इस प्रकार जोखिम को संतुलित करता है। टाइपस्क्रिप्ट किसी भी मानक द्वारा एक जोखिम भरा विकल्प नहीं है। यदि आप जावास्क्रिप्ट से परिचित हैं, तो इसका उपयोग करने के लिए बहुत कम प्रयास करना पड़ता है, क्योंकि यह पूरी तरह से अलग भाषा नहीं है, इसमें उत्कृष्ट जावास्क्रिप्ट इंटरऑपरेबिलिटी समर्थन है और इसने हाल ही में बहुत से गोद लेने को देखा है।
जावास्क्रिप्ट गतिशील रूप से टाइप किया गया है। इसका मतलब यह है कि जावास्क्रिप्ट को यह नहीं पता है कि रन-टाइम पर वास्तव में तत्काल टाइप किए जाने तक एक चर किस प्रकार का है। इसका मतलब यह भी है कि बहुत देर हो सकती है। टाइपस्क्रिप्ट जावास्क्रिप्ट में टाइप सपोर्ट जोड़ता है। कुछ प्रकार के परिवर्तनशील होने की गलत धारणा के कारण होने वाले कीड़े पूरी तरह से समाप्त हो सकते हैं यदि आप अपने कार्ड को सही खेलते हैं (आप कितना सख्त अपना कोड टाइप करते हैं या यदि आप अपना कोड टाइप करते हैं तो आप पर निर्भर है)।
टाइपस्क्रिप्ट टाइपिंग के उपयोग से टाइपस्क्रिप्ट थोड़ा आसान और बहुत कम स्पष्ट करता है। उदाहरण के लिए: var x = "hello"
टाइपस्क्रिप्ट में के रूप में ही है var x : string = "hello"
। प्रकार केवल इसके उपयोग से अनुमान लगाया गया है। यहां तक कि यह भी आप स्पष्ट रूप से टाइप नहीं करते हैं, वे अभी भी आपको ऐसा कुछ करने से बचाने के लिए हैं जो अन्यथा एक रन-टाइम त्रुटि के परिणामस्वरूप होगा।
टाइपस्क्रिप्ट डिफ़ॉल्ट रूप से वैकल्पिक रूप से टाइप किया जाता है। उदाहरण के लिए function divideByTwo(x) { return x / 2 }
टाइपस्क्रिप्ट में एक वैध फ़ंक्शन है जिसे किसी भी प्रकार के पैरामीटर के साथ कहा जा सकता है , भले ही इसे स्ट्रिंग के साथ कॉल करने से स्पष्ट रूप से रनटाइम त्रुटि हो जाएगी। जैसे आप जावास्क्रिप्ट में उपयोग किए जाते हैं। यह काम करता है, क्योंकि जब कोई प्रकार स्पष्ट रूप से निर्दिष्ट नहीं किया गया था और प्रकार का अनुमान नहीं लगाया जा सकता था, जैसे divideByTwo उदाहरण में, टाइपस्क्रिप्ट स्पष्ट रूप से प्रकार असाइन करेगा any
। इसका अर्थ है divideByTwo फ़ंक्शन का प्रकार हस्ताक्षर स्वतः हो जाता है function divideByTwo(x : any) : any
। इस व्यवहार को अस्वीकार करने के लिए एक संकलक ध्वज है --noImplicitAny
:। इस ध्वज को सक्षम करने से आपको अधिक सुरक्षा मिलती है, लेकिन इसका अर्थ यह भी है कि आपको अधिक टाइपिंग करनी होगी।
प्रकार उनके साथ जुड़े एक लागत है। सबसे पहले, एक सीखने की अवस्था है, और दूसरी बात, निश्चित रूप से, आपको उचित सख्त टाइपिंग का उपयोग करके कोडबेस को स्थापित करने में थोड़ा अधिक समय लगेगा। मेरे अनुभव में, ये लागत किसी भी गंभीर कोडबेस पर पूरी तरह से इसके लायक है जिसे आप दूसरों के साथ साझा कर रहे हैं। जीथब में प्रोग्रामिंग लैंग्वेज और कोड क्वालिटी का एक बड़ा स्केल अध्ययन बताता है कि "सामान्य रूप से टाइप की जाने वाली भाषाएं, गतिशील प्रकारों की तुलना में कम दोषपूर्ण होती हैं, और यह मजबूत टाइपिंग उसी संबंध में कमजोर टाइपिंग से बेहतर होती है"।
यह ध्यान रखना दिलचस्प है कि यह एक ही पेपर पाता है कि टाइपस्क्रिप्ट जावास्क्रिप्ट की तुलना में कम त्रुटि वाला है:
सकारात्मक गुणांक वाले उन लोगों के लिए हम उम्मीद कर सकते हैं कि भाषा से जुड़े हुए हैं, क्रेटरिस पेरिबस, अधिक से अधिक दोषों को ठीक करता है। इन भाषाओं में C, C ++, JavaScript , Objective-C, Php और Python शामिल हैं। क्लीजुर , हास्केल, रूबी, स्काला और टाइपस्क्रिप्ट सभी भाषाओं में नकारात्मक गुणांक हैं, जिसका अर्थ है कि इन भाषाओं के औसत में दोषों को ठीक करने की तुलना में कम संभावना है।
टाइपस्क्रिप्ट के साथ विकास का अनुभव जावास्क्रिप्ट पर एक महान सुधार है। IDE को वास्तविक समय में टाइपस्क्रिप्ट कंपाइलर द्वारा इसकी समृद्ध प्रकार की जानकारी पर सूचित किया जाता है। यह कुछ प्रमुख लाभ देता है। उदाहरण के लिए, टाइपस्क्रिप्ट के साथ, आप सुरक्षित रूप से अपने पूरे कोडबेस में नाम बदलने जैसे कार्य कर सकते हैं। कोड पूरा होने के माध्यम से, आप उन कार्यों पर इनलाइन मदद प्राप्त कर सकते हैं जो एक पुस्तकालय प्रदान कर सकता है। ऑनलाइन संदर्भों में उन्हें याद रखने या उन्हें देखने की कोई ज्यादा जरूरत नहीं है। जब आप कोडिंग में व्यस्त होते हैं, तो संकलनों की त्रुटियों को सीधे IDE में लाल स्क्वीजीली लाइन के साथ सूचित किया जाता है। सभी में, यह जावास्क्रिप्ट के साथ काम करने की तुलना में उत्पादकता में एक महत्वपूर्ण लाभ के लिए अनुमति देता है। कोई अधिक समय कोडिंग और कम समय डिबगिंग में बिता सकता है।
आईडीई की एक विस्तृत श्रृंखला है, जिसमें टाइपस्क्रिप्ट के लिए उत्कृष्ट समर्थन है, जैसे विज़ुअल स्टूडियो कोड, वेबस्टॉर्म, एटम और सब्लिम।
जावास्क्रिप्ट के रूप में बग की वजह से फॉर्म की रनटाइम त्रुटियाँ बहुत अधिक हैं cannot read property 'x' of undefined
या undefined is not a function
सामान्य हैं। आउट ऑफ द बॉक्स टाइपस्क्रिप्ट पहले से ही इस प्रकार की त्रुटियों की संभावना को कम कर देता है, क्योंकि कोई भी एक चर का उपयोग नहीं कर सकता है जो टाइपस्क्रिप्ट कंपाइलर ( any
टाइप किए गए चर के गुणों के अपवाद के साथ) के लिए ज्ञात नहीं है । हालांकि यह अभी भी संभव है कि गलती से एक चर का उपयोग करना जो कि सेट है undefined
। हालाँकि, टाइपस्क्रिप्ट के 2.0 संस्करण के साथ आप गैर-अशक्त प्रकारों के उपयोग के माध्यम से सभी प्रकार की त्रुटियों को एक साथ समाप्त कर सकते हैं। यह निम्नानुसार काम करता है:
जब तक आप स्पष्ट रूप से इसे अशक्त प्रकार का घोषित नहीं करते हैं, तब तक सख्त नल चेक सक्षम ( --strictNullChecks
कंपाइलर फ्लैग) टाइपस्क्रिप्ट कंपाइलर undefined
को एक चर को असाइन करने की अनुमति नहीं देगा । उदाहरण के लिए, let x : number = undefined
एक संकलन त्रुटि होगी। यह पूरी तरह से टाइप थ्योरी के साथ फिट बैठता है क्योंकि undefined
संख्या नहीं है। एक x
एक योग प्रकार number
और undefined
इसे ठीक करने के लिए परिभाषित कर सकता है let x : number | undefined = undefined
:।
एक बार एक प्रकार अशक्त होने के लिए जाना जाता है, जिसका अर्थ है कि यह एक प्रकार का है जो मूल्य का भी हो सकता है null
या undefined
, टाइपस्क्रिप्ट कंपाइलर नियंत्रण प्रवाह आधारित प्रकार विश्लेषण के माध्यम से निर्धारित कर सकता है कि आपका कोड सुरक्षित रूप से एक चर का उपयोग कर सकता है या नहीं। दूसरे शब्दों में जब आप एक चर की जाँच undefined
करते हैं उदाहरण के लिए एक if
कथन के माध्यम से टाइपस्क्रिप्ट कंपाइलर यह अनुमान लगाएगा कि आपके कोड के नियंत्रण प्रवाह की उस शाखा का प्रकार अब अशक्त नहीं है और इसलिए सुरक्षित रूप से उपयोग किया जा सकता है। ये रहा एक सरल उदाहरण:
let x: number | undefined;
if (x !== undefined) x += 1; // this line will compile, because x is checked.
x += 1; // this line will fail compilation, because x might be undefined.
बिल्ड, 2016 कॉन्फ्रेंस के टाइप-डिज़ाइनर एंडर्स हेज़ेल्सबर्ग के सह-डिज़ाइनर ने इस सुविधा का विस्तृत विवरण और प्रदर्शन दिया: वीडियो (44:30 से 56:30 तक)।
टाइपस्क्रिप्ट का उपयोग करने के लिए आपको जावास्क्रिप्ट कोड के संकलन के लिए एक निर्माण प्रक्रिया की आवश्यकता होती है। निर्माण प्रक्रिया में आम तौर पर आपकी परियोजना के आकार के आधार पर केवल कुछ सेकंड लगते हैं। टाइपस्क्रिप्ट कंपाइलर वृद्धिशील संकलन ( --watch
कंपाइलर ध्वज) का समर्थन करता है ताकि बाद के सभी परिवर्तनों को अधिक गति से संकलित किया जा सके।
टाइपस्क्रिप्ट कंपाइलर उत्पन्न .js फ़ाइलों में स्रोत मैप जानकारी को इनलाइन कर सकता है या अलग .map फाइलें बना सकता है। स्रोत मानचित्र जानकारी का उपयोग Chrome DevTools और अन्य IDE की तरह डीबगिंग उपयोगिताओं द्वारा किया जा सकता है जो जावास्क्रिप्ट में उन पंक्तियों को टाइपस्क्रिप्ट में उत्पन्न करने से संबंधित हैं। यह आपके लिए ब्रेकपॉइंट सेट करने और रनवे के दौरान चर का निरीक्षण करने के लिए सीधे आपके टाइपस्क्रिप्ट कोड पर संभव बनाता है। स्रोत मानचित्र जानकारी बहुत अच्छी तरह से काम करती है, यह टाइपस्क्रिप्ट से बहुत पहले था, लेकिन टाइपस्क्रिप्ट को डीबग करना आमतौर पर जावास्क्रिप्ट का उपयोग करते समय उतना महान नहीं होता है। this
उदाहरण के लिए कीवर्ड लें । this
ES2015 के बाद से क्लोजर के आसपास कीवर्ड के बदले हुए शब्दार्थों के कारण , रनवे के this
दौरान वास्तव में मौजूद हो सकता है जिसे चर कहा जाता है _this
( यह उत्तर देखें))। यह आपको डिबगिंग के दौरान भ्रमित कर सकता है लेकिन आम तौर पर यह समस्या नहीं है यदि आप इसके बारे में जानते हैं या जावास्क्रिप्ट कोड का निरीक्षण करते हैं। यह ध्यान दिया जाना चाहिए कि बैबल ठीक उसी तरह के मुद्दे से ग्रस्त है।
कुछ अन्य चाल टाइपप्रति संकलक कर सकते हैं, के आधार पर अवरोध उत्पन्न कर कोड जनरेट की तरह हैं सज्जाकार , विभिन्न मॉड्यूल सिस्टम के लिए मॉड्यूल लोड हो रहा है कोड जनरेट करने और पार्स करने JSX । हालाँकि, आपको टाइपस्क्रिप्ट कंपाइलर के अलावा एक बिल्ड टूल की आवश्यकता होगी। उदाहरण के लिए, यदि आप अपने कोड को संपीड़ित करना चाहते हैं तो आपको ऐसा करने के लिए अपनी निर्माण प्रक्रिया में अन्य उपकरण जोड़ने होंगे।
वहाँ टाइपप्रति संकलन के लिए उपलब्ध प्लगइन्स हैं Webpack , Gulp , ग्रंट और वहाँ काफी किसी अन्य जावास्क्रिप्ट निर्माण उपकरण। टाइपस्क्रिप्ट दस्तावेज़ में उन सभी को कवर करने वाले बिल्ड टूल के साथ एकीकरण करने पर एक अनुभाग है । यदि आप और भी अधिक समय जाँच करना चाहते हैं, तो एक लिंटर भी उपलब्ध है। वहाँ भी बड़ी संख्या में बीज परियोजनाएं हैं जो आपको अन्य तकनीकों जैसे कि कोणीय 2, रिएक्ट, एम्बर, सिस्टमजेएस, वेबपैक, गुल्प, इत्यादि के संयोजन के साथ टाइपस्क्रिप्ट के साथ मिलनी शुरू हो जाएंगी।
चूंकि टाइपस्क्रिप्ट जावास्क्रिप्ट के साथ बहुत निकटता से संबंधित है इसलिए इसमें महान अंतर क्षमताएँ हैं, लेकिन टाइपस्क्रिप्ट में जावास्क्रिप्ट पुस्तकालयों के साथ काम करने के लिए कुछ अतिरिक्त काम करने की आवश्यकता होती है। टाइपप्रति परिभाषाओं कि टाइपप्रति संकलक समझता है की तरह है कि फ़ंक्शन कॉल इसलिए जरूरत है _.groupBy
या angular.copy
या $.fadeOut
तथ्य अवैध बयान में नहीं हैं। इन कार्यों के लिए परिभाषाएं .d.ts
फाइलों में रखी गई हैं ।
सबसे सरल रूप जो एक परिभाषा ले सकता है, वह है किसी पहचानकर्ता को किसी भी तरह से उपयोग करने की अनुमति देना। उदाहरण के लिए, लॉडश का उपयोग करते समय , एक सिंगल लाइन डेफिनिशन फ़ाइल declare var _ : any
आपको अपने इच्छित किसी भी फ़ंक्शन को कॉल करने की अनुमति देगा _
, लेकिन फिर, निश्चित रूप से, आप अभी भी गलतियां करने में सक्षम हैं: _.foobar()
एक कानूनी टाइपस्क्रिप्ट कॉल होगी, लेकिन निश्चित रूप से रन-टाइम पर एक अवैध कॉल। यदि आप उचित प्रकार का समर्थन और कोड पूरा करना चाहते हैं तो आपकी परिभाषा फ़ाइल को और अधिक सटीक होना चाहिए ( उदाहरण के लिए लॉश परिभाषाएँ देखें )।
एनपीएम मॉड्यूल जो अपनी स्वयं की प्रकार की परिभाषाओं के साथ पूर्व-पैक किए जाते हैं, उन्हें टाइपस्क्रिप्ट कंपाइलर ( प्रलेखन देखें ) द्वारा स्वचालित रूप से समझा जाता है । बहुत अधिक किसी भी अन्य अर्ध-लोकप्रिय जावास्क्रिप्ट लाइब्रेरी के लिए, जिसमें अपनी स्वयं की परिभाषाएं शामिल नहीं हैं, किसी अन्य व्यक्ति ने पहले से ही किसी अन्य पीपीएम मॉड्यूल के माध्यम से टाइप परिभाषाएं उपलब्ध कराई हैं। ये मॉड्यूल "@ प्रकार /" के साथ उपसर्ग किए गए हैं और गिथब रिपॉजिटरी से आते हैं जिसे निश्चित रूप से टाइपेड कहा जाता है ।
एक कैविएट है: टाइप परिभाषाएँ उस लाइब्रेरी के संस्करण से मेल खाना चाहिए जो आप रन-टाइम पर उपयोग कर रहे हैं। यदि वे ऐसा नहीं करते हैं, तो टाइपस्क्रिप्ट आपको किसी फ़ंक्शन को कॉल करने से रोक सकता है या एक चर को डीरेफेरिंग कर सकता है जो मौजूद है या आपको फ़ंक्शन को कॉल करने की अनुमति देता है या एक वेरिएबल को मौजूद करता है जो बस मौजूद नहीं है, क्योंकि प्रकार संकलन-समय पर रन-टाइम से मेल नहीं खाते हैं । इसलिए सुनिश्चित करें कि आप जिस लाइब्रेरी का उपयोग कर रहे हैं उसके सही संस्करण के लिए टाइप परिभाषाओं का सही संस्करण लोड करें।
ईमानदार होने के लिए, इसमें थोड़ी परेशानी होती है और यह एक कारण हो सकता है कि आप टाइपस्क्रिप्ट का चयन न करें, लेकिन इसके बजाय बबल की तरह कुछ करें जो टाइप परिभाषाएँ प्राप्त करने से ग्रस्त नहीं है। दूसरी ओर, यदि आप जानते हैं कि आप क्या कर रहे हैं तो आप गलत या गुम परिभाषा फ़ाइलों के कारण किसी भी प्रकार के मुद्दों को आसानी से दूर कर सकते हैं।
किसी भी .js
फाइल का नाम बदलकर फाइल किया जा सकता है .ts
और टाइपस्क्रिप्ट कंपाइलर के माध्यम से रन किया जा सकता है ताकि आउटपुट के रूप में समान रूप से जावास्क्रिप्ट कोड प्राप्त किया जा सके (यदि यह पहले स्थान पर सही था)। यहां तक कि जब टाइपस्क्रिप्ट कंपाइलर को संकलन त्रुटियां मिलती हैं, तब भी यह एक .js
फ़ाइल का उत्पादन करेगा । यह ध्वज के .js
साथ इनपुट के रूप में फ़ाइलों को भी स्वीकार कर सकता है --allowJs
। यह आपको टाइपस्क्रिप्ट के साथ शुरुआत करने की अनुमति देता है। दुर्भाग्य से, संकलन त्रुटियों की शुरुआत में होने की संभावना है। एक को यह याद रखने की आवश्यकता है कि ये शो-स्टॉपिंग त्रुटियां नहीं हैं जैसे कि आप अन्य संकलक के साथ उपयोग कर सकते हैं।
जब एक जावास्क्रिप्ट प्रोजेक्ट को टाइपस्क्रिप्ट प्रोजेक्ट में परिवर्तित किया जाता है, तो संकलन त्रुटियों की शुरुआत होती है, टाइपस्क्रिप्ट की प्रकृति द्वारा अपरिहार्य हैं। टाइपस्क्रिप्ट वैधता के लिए सभी कोड की जांच करता है और इस प्रकार इसका उपयोग करने वाले सभी कार्यों और चर के बारे में जानने की आवश्यकता होती है। इस प्रकार प्रकार परिभाषाओं को उन सभी के लिए जगह की आवश्यकता होती है अन्यथा संकलन त्रुटियां होने के लिए बाध्य होती हैं। जैसा कि ऊपर दिए गए अध्याय में बताया गया है, किसी भी जावास्क्रिप्ट फ्रेमवर्क के लिए ऐसी .d.ts
फाइलें हैं जो आसानी से निश्चित रूप से जमा पैकेज की स्थापना के साथ हासिल की जा सकती हैं।। हालाँकि, यह हो सकता है कि आपने कुछ अस्पष्ट लाइब्रेरी का उपयोग किया हो, जिसके लिए कोई टाइपस्क्रिप्ट परिभाषा उपलब्ध नहीं है या आपने कुछ जावास्क्रिप्ट स्क्रिप्ट पॉलीफ़िल्ड किए हैं। उस स्थिति में, आपको संकलन त्रुटियों को गायब करने के लिए इन बिट्स के लिए टाइप परिभाषाएँ प्रदान करनी चाहिए। बस एक .d.ts
फ़ाइल बनाएं और इसे tsconfig.json के files
एरे में शामिल करें, ताकि इसे हमेशा टाइपस्क्रिप्ट कंपाइलर द्वारा माना जाए। इसमें उन बिट्स की घोषणा करें जो टाइपस्क्रिप्ट टाइप के बारे में नहीं जानते हैं any
। एक बार जब आप सभी त्रुटियों को समाप्त कर लेते हैं, तो आप अपनी आवश्यकताओं के अनुसार धीरे-धीरे उन हिस्सों में टाइपिंग शुरू कर सकते हैं।
टाइप वर्क को बिल्ड पाइपलाइन में लाने के लिए आपकी बिल्ड पाइपलाइन को कॉन्फ़िगर करने (री) पर कुछ काम करने की भी आवश्यकता होगी। जैसा कि संकलन पर अध्याय में उल्लेख किया गया है कि वहां बहुत सारे अच्छे संसाधन हैं और मैं आपको उन बीज परियोजनाओं की तलाश करने के लिए प्रोत्साहित करता हूं जो उन उपकरणों के संयोजन का उपयोग करते हैं जिनके साथ आप काम करना चाहते हैं।
सबसे बड़ी बाधा सीखने की अवस्था है। मैं आपको पहली बार में एक छोटी परियोजना के साथ खेलने के लिए प्रोत्साहित करता हूं। यह देखें कि यह कैसे काम करता है, यह कैसे बनता है, यह किस फाइल का उपयोग करता है, यह कैसे कॉन्फ़िगर किया गया है, यह आपके आईडीई में कैसे कार्य करता है, यह कैसे संरचित है, कौन से टूल का उपयोग करता है, आदि टाइपस्क्रिप्ट के लिए एक बड़े जावास्क्रिप्ट कोडबेस को बदलना जब वे जानते हैं तो यह उल्लेखनीय है। तुम क्या कर रहे हो। उदाहरण के लिए इस ब्लॉग को 72 घंटों में 600k लाइनों को टाइपस्क्रिप्ट में परिवर्तित करने पर पढ़ें )। जंप करने से पहले भाषा को अच्छी तरह समझ लें।
टाइपस्क्रिप्ट ओपन-सोर्स (Apache 2 लाइसेंस प्राप्त है, GitHub देखें ) और Microsoft द्वारा समर्थित है। एंडर्स हेजलसबर्ग , सी # के प्रमुख वास्तुकार परियोजना की अगुवाई कर रहे हैं। यह बहुत सक्रिय परियोजना है; टाइपस्क्रिप्ट टीम पिछले कुछ वर्षों में बहुत सी नई सुविधाएँ जारी कर रही है और बहुत सारे महान अभी भी आने की योजना बना रही है ( रोडमैप देखें )।
गोद लेने और लोकप्रियता के बारे में कुछ तथ्य:
npm
(या yarn
) है install @types/foo
। क्या आप अपना जवाब अपडेट कर सकते हैं?
टाइपस्क्रिप्ट सीएसएस के लिए कम या सैस के समान कुछ करता है। वे इसके सुपर सेट हैं, जिसका अर्थ है कि आपके द्वारा लिखा गया प्रत्येक जेएस कोड वैध टाइपस्क्रिप्ट कोड है। साथ ही आप अन्य अच्छाइयों का उपयोग कर सकते हैं जो इसे भाषा में जोड़ता है, और ट्रांसप्लड कोड मान्य जेएस होगा। आप जेएस संस्करण भी सेट कर सकते हैं जिसे आप अपना परिणाम कोड चाहते हैं।
वर्तमान में टाइपस्क्रिप्ट ES2015 का एक सुपर सेट है, इसलिए आपके प्रोजेक्ट के लिए आवश्यक मानक के लिए नए जेएस फीचर्स और ट्रांसपाइल सीखना शुरू करने के लिए एक अच्छा विकल्प हो सकता है।
" टाइपप्रति बुनियादी बातों " - एक Pluralsight वीडियो पाठ्यक्रम द्वारा दान Wahlin और जॉन पिताजी एक बहुत अच्छी, वर्तमान में (25 मार्च 2016) टाइपप्रति 1.8 के अनुसार अपडेट, टाइपप्रति को परिचय है।
मेरे लिए वास्तव में अच्छी विशेषताएं, इंटेलीजेंस के लिए अच्छी संभावनाओं के साथ, वर्ग हैं , इंटरफेस , मॉड्यूल , एएमडी को लागू करने में आसानी, और IE के साथ आने पर विजुअल स्टूडियो टाइपस्क्रिप्ट डिबगर का उपयोग करने की संभावना।
सारांशित करने के लिए : यदि इरादा के रूप में उपयोग किया जाता है, तो टाइपस्क्रिप्ट जावास्क्रिप्ट प्रोग्रामिंग को अधिक विश्वसनीय और आसान बना सकता है। यह पूर्ण SDLC पर जावास्क्रिप्ट प्रोग्रामर की उत्पादकता को काफी बढ़ा सकता है।
एक्मा स्क्रिप्ट 5 (ईएस 5) जो सभी ब्राउज़र का समर्थन करता है और पूर्वनिर्धारित करता है। ES6 / ES2015 और ES / 2016 इस साल बहुत सारे बदलावों के साथ आए, ताकि इन परिवर्तनों को पॉप करने के लिए बीच में कुछ ऐसा हो, जिससे टाइपस्क्रिप्ट के बारे में परवाह की जाए।
• टाइपस्क्रिप्ट प्रकार है -> इसका मतलब है कि हमें प्रत्येक संपत्ति और विधियों के डेटाटाइप को परिभाषित करना होगा। यदि आप C # जानते हैं तो टाइपस्क्रिप्ट को समझना आसान है।
टाइपस्क्रिप्ट का बड़ा फायदा यह है कि हम उत्पादन से पहले जल्दी से संबंधित प्रकारों की पहचान कर लेते हैं। यह किसी भी प्रकार के बेमेल होने पर यूनिट परीक्षणों को विफल करने की अनुमति देता है।