कक्षा टाइपप्रति के साथ प्रकार की जांच

वोट
107

मैं के बारे में बहुत उत्साहित हूँ टाइपप्रति , इसलिए मैं इसके साथ खेलने के लिए शुरू कर दिया। एक एक्शन डेवलपर के रूप में, यह कम कठिन जावास्क्रिप्ट बनाता है।

हालांकि, Actionscript में इसका उपयोग करने रन-टाइम में प्रकार की जांच के लिए संभव है है ऑपरेटर :

var mySprite:Sprite = new Sprite(); 
trace(mySprite is Sprite); // true 
trace(mySprite is DisplayObject);// true 
trace(mySprite is IEventDispatcher); // true

यह अगर एक चर (फैली हुई है या) एक निश्चित वर्ग या टाइपप्रति साथ इंटरफेस है पता लगाने के लिए संभव है? मैं भाषा चश्मा में इसके बारे में कुछ भी नहीं मिल सकता है, यह वहाँ जब साथ वर्गों / इंटरफेस काम कर रहा होना चाहिए।


अद्यतन: कुछ साल बाद। मैं बहुत तेजी से टाइपप्रति गिरा दिया और का उपयोग शुरू Haxe जो उत्कृष्ट जावास्क्रिप्ट को संकलित करता है तथा वास्तविक प्रकार-चेकिंग जो वर्गों पर काम करता है, इंटरफेस आदि इसके अलावा मृत-कोड हटाने, बेहतर enums, सार प्रकार और संकलन समय कार्य (मैक्रो) है, यह भी संकलित एक फाइल करने के लिए तो कोई जटिल बंडल निर्माण प्रणाली की जरूरत है।

08/10/2012 को 21:47
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
142

4.19.4 instanceof ऑपरेटर

instanceofऑपरेटर प्रकार किसी भी एक वस्तु प्रकार, या एक प्रकार पैरामीटर प्रकार की होनी चाहिए बाईं संकार्य आवश्यकता है, और सही संकार्य प्रकार किसी भी या 'समारोह' इंटरफ़ेस प्रकार की एक उप प्रकार का हो सकता है। परिणाम हमेशा बूलियन आदिम प्रकार का है।

तो अगर आप इस्तेमाल कर सकते हैं

mySprite instanceof Sprite;

ध्यान दें कि यह ऑपरेटर ActionScript में भी है, लेकिन यह वहाँ अब और नहीं किया जाना चाहिए:

है ऑपरेटर, जो ActionScript 3.0 के लिए नया है, आप परीक्षण करने के लिए एक चर या अभिव्यक्ति किसी दिए गए डेटा प्रकार के एक सदस्य है या नहीं। ActionScript के पिछले संस्करणों में, instanceof ऑपरेटर का उपयोग प्रदान की है, लेकिन ActionScript 3.0 में instanceof ऑपरेटर डेटा प्रकार सदस्यता के लिए परीक्षण करने के लिए नहीं किया जाना चाहिए। ऑपरेटर, मैनुअल प्रकार की जाँच के लिए instanceof ऑपरेटर के स्थान पर किया जाना चाहिए, क्योंकि अभिव्यक्ति x instanceof y केवल y के अस्तित्व के लिए एक्स के प्रोटोटाइप श्रृंखला की जांच करता है (और ActionScript 3.0 में, प्रोटोटाइप श्रृंखला की पूरी तस्वीर प्रदान नहीं करता है वंशानुगत पदानुक्रम)।

टाइपप्रति के instanceofशेयरों में एक ही समस्या है। यह एक भाषा है जो इसे के विकास में अब भी है है के रूप में मैं सुझाव है कि आप इस तरह के सुविधा के लिए एक प्रस्ताव राज्य के लिए।

यह भी देखें:

08/10/2012 को 21:54
का स्रोत उपयोगकर्ता

वोट
8

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

टाइपप्रति डॉक्स से उदाहरण:

function isFish(pet: Fish | Bird): pet is Fish {
   return (<Fish>pet).swim !== undefined;
}

// Both calls to 'swim' and 'fly' are now okay.
if (isFish(pet)) {
  pet.swim();
}
else {
  pet.fly();
}

: पर अधिक देखें https://www.typescriptlang.org/docs/handbook/advanced-types.html

21/11/2016 को 10:42
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more