आप बहुत कम अंतर tsx
के ts
साथ उपयोग कर सकते हैं । tsx
स्पष्ट रूप से jsx
टाइपस्क्रिप्ट के अंदर टैग के उपयोग की अनुमति देता है , लेकिन यह कुछ पार्सिंग अस्पष्टता का परिचय देता है जो tsx को थोड़ा अलग बनाता है। मेरे अनुभव में ये अंतर बहुत बड़े नहीं हैं:
प्रकार के साथ <>
काम न करें जैसा कि jsx टैग के लिए मार्कर है।
टाइपस्क्रिप्ट के प्रकार के सिद्धांत के लिए दो वाक्यविन्यास हैं। वे दोनों सटीक एक ही काम करते हैं लेकिन एक tsx में प्रयोग करने योग्य है दूसरा नहीं है:
let a: any;
let s = a as string // ok in tsx and ts
let s2 = <string>a // only valid in ts
मैं का प्रयोग करेंगे as
के बजाय <>
में ts
स्थिरता के लिए भी फ़ाइलें। as
वास्तव में टाइपस्क्रिप्ट में पेश किया <>
गया था क्योंकि इसमें प्रयोग करने योग्य नहीं थाtsx
बिना किसी बाधा के जेनेरिक एरो फ़ंक्शंस को सही ढंग से पार्स नहीं किया जाता है
नीचे तीर समारोह में ठीक है ts
, लेकिन में एक त्रुटि tsx
के रूप में <T>
में एक टैग की शुरुआत के रूप में व्याख्या की हैtsx
const fn = <T>(a: T) => a
आप एक बाधक फ़ंक्शन का उपयोग करके या तो बाधा डालकर इसे प्राप्त कर सकते हैं:
const fn = <T extends any>(a: T) => a
const fn = <T,>(a: T) => a // this also works but looks weird IMO
const fn = function<T>(a: T) { return a;}
ध्यान दें
जबकि आप tsx का उपयोग ts के बजाय कर सकते हैं, मैं इसके खिलाफ सुझाऊंगा। कन्वेंशन एक शक्तिशाली चीज है, लोग इसके tsx
साथ जुड़ते हैं jsx
और शायद आपको आश्चर्य होगा कि आपके पास कोई jsx
टैग नहीं है , डेवलपर को न्यूनतम के लिए आश्चर्यचकित रखें।
हालांकि उपरोक्त अस्पष्टता (हालांकि शायद पूरी सूची नहीं है) बड़ी नहीं हैं, उन्होंने ts
फाइलों को पीछे की ओर संगत रखने के लिए नए सिंटैक्स के लिए समर्पित फ़ाइल एक्सटेंशन का उपयोग करने के निर्णय में एक बड़ी भूमिका निभाई है ।