क्या मुझे टाइपस्क्रिप्ट का उपयोग करना चाहिए? या मैं सिर्फ ES6 का उपयोग कर सकता हूं? [बन्द है]


286

मेरा दैनिक काम AngularJS का उपयोग करके क्लाइंट डेवलपर है। यदि हम टाइपस्क्रिप्ट के साथ जाना चाहते हैं तो हम मूल्यांकन कर रहे हैं। मैंने टाइपस्क्रिप्ट पर कुछ शोध किया है और लगभग हर जावास्क्रिप्ट पैकेज की मुझे परिभाषा प्रकार की फाइलें चाहिए। मैंने पाया कि यह बहुत सुविधाजनक नहीं है, खासकर अगर मैं कुछ नया करने की कोशिश करना चाहूंगा और इसके लिए उनकी परिभाषा नहीं है। यह वास्तव में निराशाजनक है। (यहां तक ​​कि वर्तमान jQuery की परिभाषा मुझे कुछ समस्याएं देती है अगर मैं टाइपस्क्रिप्ट 1.5 बीटा का उपयोग करना चाहता हूं)। मैंने ES6 को देखना शुरू किया और यह टाइपस्क्रिप्ट के समान दिखता है। क्या मुझे इसके बजाय ES6 का उपयोग करना चाहिए? इसके अलावा, मैंने सुना है कोणीय 2 में टाइपस्क्रिप्ट के लिए पूर्ण समर्थन होगा, क्या यह एक कारण होगा कि मुझे इसके साथ रहना चाहिए?


11
आपको कुछ नया करने के लिए परिभाषा फ़ाइल की आवश्यकता नहीं है। यदि आप बिना किसी प्रकार के पुस्तकालय का उपयोग करना चाहते हैं, declare var MyNewLibraryName: any;तो आप इसे कंपाइलर शिकायत के बिना कृपया उपयोग कर सकते हैं ।
डेविड शेरेट

2
इस प्रश्न को बंद करने के लिए वोटों के साथ, मैं सुझाव दूंगा कि प्रत्येक दृष्टिकोण के साथ जुड़े पेशेवरों / विपक्षों में से जो पूछने के बजाय सबसे अच्छा है, इस तरह से आप जानकारी के लिए पूछ रहे हैं और राय के लिए नहीं।
ब्रोको

टाइपस्क्रिप्ट सभी प्रमुख ब्राउज़रों से पहले जावास्क्रिप्ट नए संस्करण की सुविधा को अपडेट करता है, मेरा विकल्प टाइपस्क्रिप्ट का उपयोग करना और आपके लक्षित ब्राउज़रों के आधार पर जावास्क्रिप्ट संस्करण का संकलन करना है। (ज़ाहिर है कि जावास्क्रिप्ट को एक संस्करण से दूसरे संस्करण में ट्रांसफ़ॉर्म करना भी आसान है)
bhv

यदि आप अपने कोड को सही ढंग से लिंट करने में सक्षम होने के बारे में परेशान नहीं हैं, और आप चाहते हैं कि Immutable.js के साथ काम करना वास्तव में कठिन हो, और आपको बॉयलरप्लेट लिखना बहुत पसंद है, और आपको लगता है कि DRY ओवररेटेड है और आप वास्तव में खुद को दोहराना पसंद करते हैं, और आप अन्य लोगों के कोड के लिए लेखन प्रकार का आनंद लें, और आप प्रकारों को प्रबंधित करना पसंद करते हैं क्योंकि वे आपके नीचे बदलते हैं, और आप दो अलग-अलग पाठ संपादकों के बीच स्विच करने का आनंद लेते हैं क्योंकि कुछ भी ठीक से काम नहीं करता है, तो टाइपस्क्रिप्ट चुनें। लेकिन अगर आप समझदार हैं, तो ES6 / 7 और Babel चुनें।
गरुड़

जवाबों:


114

मैं अपनी वर्तमान कोणीय परियोजना में लगभग डेढ़ साल से टाइपस्क्रिप्ट का उपयोग कर रहा हूं और जबकि हर बार परिभाषाओं के साथ कुछ समस्याएँ होती हैं और निश्चित रूप से निश्चित परियोजना सबसे लोकप्रिय पुस्तकालयों के नवीनतम संस्करणों को ध्यान में रखते हुए एक अद्भुत काम करती है।

यह कहते हुए कि वेनिला जावास्क्रिप्ट से टीएस में संक्रमण होने पर एक निश्चित सीखने की अवस्था है और आपको उस संक्रमण को बनाने के लिए आपकी और आपकी टीम की क्षमता को ध्यान में रखना चाहिए। यदि आप कोणीय 1.x का उपयोग करने जा रहे हैं, तो अधिकांश उदाहरण जो आपको ऑनलाइन मिलेंगे, आपको उन्हें जेएस से टीएस में अनुवाद करने की आवश्यकता होगी और कुल मिलाकर टीएस और कोणीय 1.x का एक साथ उपयोग करने के लिए अभी बहुत सारे संसाधन नहीं हैं। ।

यदि आप कोणीय 2 का उपयोग करने की योजना बनाते हैं तो टीएस का उपयोग करने के लिए बहुत सारे उदाहरण हैं और मुझे लगता है कि टीम टीएस में अधिकांश प्रलेखन प्रदान करना जारी रखेगी, लेकिन निश्चित रूप से आपको कोणीय 2 का उपयोग करने के लिए टीएस का उपयोग करने की आवश्यकता नहीं है।

ES6 में कुछ अच्छी विशेषताएं हैं और मैं व्यक्तिगत रूप से इससे परिचित होने की योजना बना रहा हूं, लेकिन मैं इसे इस बिंदु पर एक उत्पादन-तैयार भाषा नहीं मानूंगा। मुख्य रूप से वर्तमान ब्राउज़रों द्वारा समर्थन की कमी के कारण। बेशक, आप अपने कोड को ES6 में लिख सकते हैं और इसे ES5 पर लाने के लिए एक ट्रांसपिलर का उपयोग कर सकते हैं, जो कि अभी करने के लिए लोकप्रिय चीज लगती है।

कुल मिलाकर मुझे लगता है कि इसका उत्तर आपको और आपकी टीम को सीखने में सहज होगा। मुझे व्यक्तिगत रूप से लगता है कि टीएस और ईएस 6 दोनों को अच्छा समर्थन और लंबा वायदा मिलेगा, मैं टीएस को पसंद करता हूं, क्योंकि आप भाषा सुविधाओं को जल्दी प्राप्त करते हैं और अभी टूलिंग समर्थन (मेरी राय में) थोड़ा बेहतर है।


40
ES6 को कोई ब्राउज़र समर्थन नहीं मिला ?? क्या आप कुछ एमएस राजनीतिज्ञ हैं? टाइपस्क्रिप्ट और ईएस 6 दोनों को एक ट्रांसपिलर की जरूरत है। इसका मतलब है कि आप वेब पर टीएस या ईएस 6 नहीं चला रहे हैं, बल्कि बैबल जैसी किसी चीज का उपयोग कर रहे हैं। टीएस में कोणीय 2 को केवल एक राजनीतिक टाई के लिए जोड़ा गया था, जो Google और MS
STE

40
@STEEL नहीं एक एमएस राजनेता आप केवल एक साल पहले मेरे द्वारा दिए गए जवाब का जवाब दे रहे हैं जब ईएस 6 का समर्थन बहुत सीमित था। और आप यह सोचने के लिए स्वतंत्र हैं कि TS और Angular 2 निर्णय राजनीतिक था लेकिन इससे मेरी बात नहीं बदल रही है कि यह उस भाषा के लिए लिखा गया था और Angular2 टीम इसके उपयोग को प्रोत्साहित कर रही है।
केंट कूपर

18
यह 2 साल पहले से है, लेकिन समय ने दिखाया है कि मानक आखिरकार कैसे प्रबल होता है। ES6 आजकल अधिकांश ब्राउज़रों द्वारा मूल रूप से समर्थित है। कक्षाएं, तीर फ़ंक्शन आदि, आखिरकार, हम एक ऐसे बिंदु पर पहुंचेंगे जहां ब्राउज़र मूल रूप से ट्रांसपॉयर्स को अनावश्यक बनाने के लिए जावास्क्रिप्ट के एक सभ्य पर्याप्त संस्करण का समर्थन करेंगे। टाइपस्क्रिप्ट को हमेशा ट्रांसपिलर की आवश्यकता होगी। यह महत्वपूर्ण क्यों है? क्योंकि वेब डेवलपर्स के रूप में यह हमारा कर्तव्य है कि हम वेब को आगे बढ़ाएं, और वह मानकों का समर्थन करके है
monzonj

3
यह एक bummer ES6 वास्तविक "संकलन समय" प्रकार की सुरक्षा का समर्थन नहीं करता है। ES6 में बहुत सारे शानदार सामान हैं, लेकिन इस तथ्य को मैं नहीं कह सकता कि "यह तर्क एक स्ट्रिंग (या दसवीं कक्षा का उदाहरण है), ठीक है" और आपकी बिल्ड प्रक्रिया के भाग के रूप में सत्यापित किया जा सकता है बड़े कार्यक्रम (फ्रंट एंड और बैक एंड एक जैसे)।
ब्रैड पीबॉडी

यदि आप वास्तव में चाहते हैं तो आप ES6 में टाइप सपोर्ट को जोड़ने के लिए फ्लो टाइप जैसे टूल का उपयोग कर सकते हैं। जब तक ES6 सभी ब्राउज़रों में सर्वव्यापी नहीं हो जाता, तब तक आपका टूलकिन फ़्लो-> ES6-> बैबल से बना रहेगा, जो बहुत अधिक अप्रत्यक्ष है, लेकिन काम करता है और मुझे लगता है कि वर्तमान में एक बहुत लोकप्रिय श्रृंखला है।
प्रहलाद यारी

660

ईएस 5, ईएस 6 और टाइपस्क्रिप्ट के बीच निर्णय का पेड़

क्या आपके मन में बिल्ड स्टेप है?

  • हां - ईएस 5 का उपयोग करें
  • नहीं - चलते रहो

क्या आप प्रकारों का उपयोग करना चाहते हैं?

  • हां - टाइपस्क्रिप्ट का उपयोग करें
  • नहीं - ES6 का उपयोग करें

अधिक जानकारी

ES5 वह जावास्क्रिप्ट है जिसे आप ब्राउज़र में जानते हैं और उसका उपयोग करते हैं आज यह वही है और इसे आज के ब्राउज़रों में चलने वाली किसी चीज़ में बदलने के लिए एक बिल्ड कदम की आवश्यकता नहीं है।

ES6 (जिसे ES2015 भी कहा जाता है ) जावास्क्रिप्ट का अगला पुनरावृत्ति है, लेकिन यह आज के ब्राउज़रों में नहीं चलता है। काफी ट्रांसपॉयलर हैं जो ब्राउज़रों में चलने के लिए ES5 निर्यात करेंगे। यह अभी भी एक गतिशील (पढ़ें: अप्रकाशित) भाषा है।

टाइपप्रति जावास्क्रिप्ट ( और 7) के भविष्य के संस्करणों से सुविधाओं में खींचते हुए एक वैकल्पिक टाइपिंग सिस्टम प्रदान करता है।

नोट: वहाँ बहुत सारे ट्रांसपॉयलर (यानी बाबेल, टाइपस्क्रिप्ट) आपको आज जावास्क्रिप्ट के भविष्य के संस्करणों से सुविधाओं का उपयोग करने और कोड का निर्यात करने की अनुमति देंगे जो आज भी ब्राउज़रों में चलेंगे।


5
यह इतना आसान नहीं है। अन्य कारक बहुत सारे हैं।
RaoulRubin

16
@RaoulRubin यह सच है, बहुत सारे अन्य कारक हैं, लेकिन यहाँ एक बंद प्रश्न के लिए यह कम से कम निर्णय लेने की प्रक्रिया के लिए एक प्रारंभिक आधार प्रदान करता है
Brocco

1
PS - ES6 + FlowType = Love :)
Red2678

3
@ रविंदरपाल का दिलचस्प सवाल है, ब्रोको। बाजार के नजरिए से, TS बनाम es5 या es6 और उन लाइनों के साथ सामान का मूल्य क्या है ?
J.Wells

3
ठीक है, तो यह पोस्ट कुछ साल पुरानी है /। आइए आज, 28 सितंबर, 2017 को तेजी से आगे बढ़ें। क्या ज्यादातर ब्राउज़र ईएस 6 का समर्थन कर रहे हैं?
डेवी बैंक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.