अब टाइपस्क्रिप्ट बाहर आया, यह मेरे लिए एक रोमांचक खबर है, लेकिन मैं सभी मौजूदा जावास्क्रिप्ट फाइलों को टाइपस्क्रिप्ट में कैसे बदल सकता हूं।
अब टाइपस्क्रिप्ट बाहर आया, यह मेरे लिए एक रोमांचक खबर है, लेकिन मैं सभी मौजूदा जावास्क्रिप्ट फाइलों को टाइपस्क्रिप्ट में कैसे बदल सकता हूं।
जवाबों:
मुझे डर है कि यह बहुत समस्याग्रस्त होगा। टाइपस्क्रिप्ट जावास्क्रिप्ट का एक सुपरसेट है । इसका अर्थ है कि सभी मान्य जावास्क्रिप्ट कोड भी मान्य टाइपस्क्रिप्ट कोड हैं। जो सिर्फ गलत है। जावास्क्रिप्ट में निम्नलिखित कोड सही है, लेकिन टाइपस्क्रिप्ट में एक त्रुटि बनाता है:
var data={x:5, y:6};
data.z=5;
आप डेटा को "परिवेश" घोषित करके जावास्क्रिप्ट का गतिशील व्यवहार प्राप्त कर सकते हैं
var data:any={x:5, y:6};
data.z=5;
अब यह टाइपस्क्रिप्ट में भी काम करेगा। फिर भी आप एक .js फ़ाइल के एक्सटेंशन को .ts को बदल सकते हैं और इस फ़ाइल को टाइपस्क्रिप्ट कंपाइलर को पास कर सकते हैं। यह वास्तव में मुझे भ्रमित करता है और मैंने फरिनोड पर टाइपस्क्रिप्ट आईआरसी चैनल में सवाल पूछा है। यह पता चला कि टाइपस्क्रिप्ट कंपाइलर वैध जावास्क्रिप्ट के लिए अपने इनपुट की जांच करता है और अगर उसे कुछ मिलता है तो वह कुछ भी नहीं करता है। सहज रूप से यह अच्छा लगता है। आपको फ़ाइल एक्सटेंशन को केवल अपडेट करके अपने सभी जावास्क्रिप्ट को टाइपस्क्रिप्ट में "कन्वर्ट" करने में सक्षम होना चाहिए और जाने के लिए अच्छा होना चाहिए। दुर्भाग्य से यह उम्मीद के मुताबिक काम नहीं करता है। मान लेते हैं कि आपको यह कोड मिल गया है:
var func=function(n){alert(n)};
var data={x:5};
data.z=6;
संपादित करें: मैंने इसे संकलित करने की कोशिश की है और यह काम नहीं करता है। मुझे क्षमा करें, मुझे लगता है कि गलती हुई है: टाइपस्क्रिप्ट कंपाइलर भी शुद्ध जावास्क्रिप्ट को स्वीकार नहीं करता है। मैं यह पता लगाने की कोशिश करूंगा कि क्या गलत हुआ।
आपने फ़ाइल एक्सटेंशन को .ts में बदल दिया है और अपने अन्य कोड में फ़ंक्शन फ़ंक्शंस का उपयोग किया है। पहले तो सब कुछ ठीक लगता है लेकिन फिर एक बदसूरत बग उठ जाती है। आप तय करते हैं कि कुछ स्थैतिक प्रकार की जाँच शायद आपकी मदद करेगी और आप कोड को बदलेंगे:
var func=function(n:string){alert(n)};
var data={x:5};
data.z=6;
लेकिन अब यह जावास्क्रिप्ट कोड मान्य नहीं है और यह कंपाइलर को बहुत सारे एरर मैसेज जेनरेट करेगा। सभी डेटा के बाद कोई भी सदस्य "z" नहीं है। ... इस व्यवहार से बचा जा सकता है यदि डिफ़ॉल्ट प्रकार हमेशा "कोई भी" होगा, लेकिन तब प्रकार का अनुमान पूरी तरह से बेकार होगा।
तो आप इस समस्या को कैसे हल करते हैं? इसका उत्तर है: घोषणा फाइलें। आप प्रोजेक्ट में अपने जावास्क्रिप्ट कोड "जैसा है" का उपयोग कर सकते हैं और फिर भी कुछ .d.ts फ़ाइलों की मदद से स्थिर प्रकार की जाँच कर सकते हैं। वे संकलक को सूचित करते हैं कि एक जावास्क्रिप्ट फ़ाइल में चर, विधियां और "वर्ग" क्या हैं, उनके प्रकार भी शामिल हैं। इसलिए वे संकलन-समय प्रकार की जाँच और शानदार परिचय के लिए अनुमति देते हैं। मेरे उदाहरण के लिए .d.ts फ़ाइल होगी
declare var data:any;
declare function func(n:string);
इसे "myjsfile.d.ts" के रूप में सहेजें और इसे टाइपस्क्रिप्ट के साथ आयात करें
///<reference path="myjsfile.d.ts"/>
संकलित टाइपस्क्रिप्ट के ऊपर अपनी HTML फ़ाइल में जावास्क्रिप्ट स्क्रिप्ट शामिल करना सुनिश्चित करें। यहाँ एक दिलचस्प कड़ी है । आपको "टाइपिंग जावास्क्रिप्ट को टाइपस्क्रिप्ट में" अनुभाग में रुचि हो सकती है।
noEmitOnErrorयह बंद है, तब भी यह अपने ट्रांसप्लीकेशन को संचालित और उत्सर्जित करने में सक्षम है। इस प्रकार, जबकि यह त्रुटियों को दिखाता है (जो परेशान है), आप वास्तव में उन त्रुटियों को अनदेखा कर सकते हैं और इसके बावजूद टाइपस्क्रिप्ट ट्रांसप्लिकेशन का उपयोग कर सकते हैं (उदाहरण के लिए, जेएस से टीएस के क्रमिक संक्रमण)। साथ ही, कम से कम कुछ त्रुटियों को स्विच के माध्यम से अक्षम किया जा सकता है noImplicitAny, जैसे (शायद सभी, हालांकि आईडीके)।
अपडेट: इस पोस्ट में विवरण में टूल का वर्णन किया गया है
संस्करण 9 ( ईएपी बिल्ड उपलब्ध ) के साथ शुरू होने वाले रिस्पर में जावास्क्रिप्ट कोड को टाइपस्क्रिप्ट में स्वचालित रूप से बदलने की कार्यक्षमता होती है। आप .js फ़ाइल को .ts में नाम बदलने के साथ शुरू कर सकते हैं और R # सुझावों को इस तरह देख सकते हैं:

वास्तविक दुनिया के उदाहरणों पर इसे आजमाया नहीं गया। लेकिन यह बड़ी संख्या में जावास्क्रिप्ट पैटर्न को बदलने में सक्षम है।
टर्मिनल (मैक) से:
for f in *.js; do mv $f `basename $f .js`.ts; done;
सभी .js फ़ाइलों को .ts के लिए नया नाम देता है
यह कुछ हद तक जीभ-में-गाल है - लेकिन बेंजामिन के रूप में जावास्क्रिप्ट फ़ाइलों के ऊपर इंगित करता है कि मान्य टाइपस्क्रिप्ट हैं । यदि आप अपने जावास्क्रिप्ट में प्रकार, वर्ग, इंटरफेस आदि जोड़ना चाहते हैं - तो आपको स्वयं इन अवधारणाओं का उपयोग करके अपने कोड को डिजाइन और बदलने की आवश्यकता होगी - इसके लिए कोई स्वचालित रूपांतरण नहीं है।
GNU खोज के साथ (अधिकांश * निक्स) + बैश, बस करें:
find -type f -name '*.js' -exec bash -c 'mv "${1}" "${1%???}.ts"' bash {} \;
var a = 5; a = "";