टाइपस्क्रिप्ट में नए दावे और नए `as` संचालक के बीच कोई अंतर?


143

क्या टाइपस्क्रिप्ट कल्पना एक प्रकार का अभिकथन कहती है, इसके बीच कोई अंतर है:

var circle = <Circle> createShape("circle");

और नए as ऑपरेटर:

var circle = createShape("circle") as Circle;

दोनों आमतौर पर संकलन-समय कास्टिंग के लिए उपयोग किए जाते हैं?

जवाबों:


168

अंतर यह है कि as CircleTSX फ़ाइलों में काम करता है, लेकिन <Circle>JSX सिंटैक्स के साथ विरोध करता है। asइस कारण से शुरू किया गया था।

उदाहरण के लिए, .tsxफ़ाइल में निम्न कोड :

var circle = <Circle> createShape("circle");

निम्नलिखित त्रुटि का परिणाम होगा:

TS17002 त्रुटि: 'सर्कल' के लिए संबंधित JSX समापन टैग की अपेक्षा।

हालांकि, as Circleबस ठीक काम करेगा।

as Circleअभी से उपयोग करें । यह अनुशंसित सिंटैक्स है।


39

से विकी पेज : "क्या टाइपप्रति में [1.6] नया क्या है":

नई .tsxफ़ाइल एक्सटेंशन और asऑपरेटर

टाइपस्क्रिप्ट 1.6 एक नई .tsxफ़ाइल एक्सटेंशन का परिचय देता है । यह एक्सटेंशन दो काम करता है: यह टाइपस्क्रिप्ट फ़ाइलों के अंदर JSX को सक्षम करता है, और यह नए asऑपरेटर को कास्ट करने के लिए डिफ़ॉल्ट तरीका बनाता है (JSX अभिव्यक्तियों और टाइपस्क्रिप्ट प्रीफ़िक्स कास्ट ऑपरेटर के बीच किसी भी अस्पष्टता को हटाने)। उदाहरण के लिए:

var x = <any> foo; 
// is equivalent to:
var x = foo as any;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.