उत्तर
असल में, इसका मतलब है कि इंटरफेस की तुलना एक प्रकार के पहचान आधार के बजाय "बतख टाइपिंग" आधार पर की जाती है।
interface X1 { string Name { get; } }
interface X2 { string Name { get; } }
// ... later
X1 a = null;
X2 b = a; // Compile error! X1 and X2 are not compatible
और बराबर टाइपप्रति कोड:
निम्नलिखित सी # कोड पर विचार करें
interface X1 { name: string; }
interface X2 { name: string; }
var a: X1 = null;
var b: X2 = a; // OK: X1 and X2 have the same members, so they are compatible
कल्पना ज्यादा विस्तार से इस कवर नहीं करता है, लेकिन कक्षाएं "ब्रांडों" जिसका अर्थ है इंटरफेस के बजाय कक्षाओं के साथ लिखे गए एक ही कोड, में कोई त्रुटि होगी। सी # इंटरफेस में ब्रांड होते हैं, और इस प्रकार निहित रूप से परिवर्तित नहीं किया जा सकता है।
इसके बारे में सोचने का सबसे आसान तरीका यह है कि यदि आप इंटरफ़ेस एक्स से इंटरफ़ेस वाई में रूपांतरण करने का प्रयास कर रहे हैं, यदि एक्स में वाई के सभी सदस्य हैं, तो रूपांतरण सफल होता है, भले ही एक्स और वाई के समान नहीं हो नाम।
के बारे में सोचें।
class Employee { fire: = ..., otherMethod: = ...}
class Missile { fire: = ..., yetMoreMethod: = ...}
interface ICanFire { fire: = ...}
val e = new Employee
val m = new Missile
ICanFire bigGuy = if(util.Random.nextBoolean) e else m
bigGuy.fire
क्या होगा अगर हम ने कहा:
interface IButtonEvent { fire: = ...}
interface IMouseButtonEvent { fire: = ...}
...
टाइपप्रति इस की अनुमति देगा, सी # नहीं होगा।
टाइपस्क्रिप्ट का उद्देश्य "ढीला" टाइपिंग का उपयोग करने वाले डीओएम के साथ अच्छी तरह से काम करना है, यह टाइपस्क्रिप्ट के लिए एकमात्र समझदार विकल्प है।
मैं इसे पाठक अप करने के लिए छोड़ अगर वे "स्ट्रक्चरल टाइपिंग" ... की तरह तय करने के लिए ..
मैं इस संक्षिप्त पढ़ा है http://stackoverflow.com/questions/2831175/does-c-sharp- एक समकक्ष-से-स्केल-स्ट्रक्चरल-टाइपिंग जो इसे थोड़ा स्पष्ट करता है, लेकिन फिर भी यह जानना चाहेंगे कि इसका उपयोग टाइपस्क्रिप्ट में कैसे किया जाता है –