इन कथनों (इंटरफ़ेस बनाम प्रकार) के बीच क्या अंतर है?टाइपस्क्रिप्ट: इंटरफेस बनाम प्रकार
interface X {
a: number
b: string
}
type X = {
a: number
b: string
};
इन कथनों (इंटरफ़ेस बनाम प्रकार) के बीच क्या अंतर है?टाइपस्क्रिप्ट: इंटरफेस बनाम प्रकार
interface X {
a: number
b: string
}
type X = {
a: number
b: string
};
TypeScript Language Specification के अनुसार:
एक अंतरफलक घोषणा है, जो हमेशा एक नामित ऑब्जेक्ट प्रकार का परिचय के विपरीत, एक प्रकार उर्फ घोषणा प्रकार के किसी भी प्रकार, आदिम, संघ सहित के लिए एक नाम लागू कर सकते हैं, और चौराहे के प्रकार।
विनिर्देश उल्लेख करने के लिए पर चला जाता है:
इंटरफ़ेस प्रकार ऑब्जेक्ट प्रकार शाब्दिक कल्पित नामों टाइप करने के लिए कई समानताएं हैं, लेकिन जब से इंटरफ़ेस प्रकार अधिक क्षमताओं की पेशकश वे आम तौर पर उपनाम टाइप करने के लिए पसंद किया जाता है। उदाहरण के लिए, इंटरफ़ेस प्रकार
interface Point { x: number; y: number; }
प्रकार उपनाम के रूप में लिखा जा सकता है
type Point = { x: number; y: number; };
हालांकि, ऐसा करने का मतलब है निम्नलिखित क्षमताएं खो जाती हैं:
- एक इंटरफेस में नामित किया जा सकता है एक खंड बढ़ाता है या लागू करता है, लेकिन किसी ऑब्जेक्ट प्रकार के शाब्दिक के लिए एक प्रकार का उपनाम नहीं हो सकता है।
- एक इंटरफ़ेस में कई मर्ज किए गए घोषणाएं हो सकती हैं, लेकिन ऑब्जेक्ट प्रकार के लिए एक प्रकार का उपनाम शाब्दिक नहीं हो सकता है।
https://www.typescriptlang.org/docs/handbook/advanced-types.html
एक अंतर यह है कि इंटरफेस एक नया नाम है कि हर जगह प्रयोग किया जाता है पैदा करते हैं। टाइप उपनाम एक नया नाम नहीं बनाते - उदाहरण के लिए, त्रुटि संदेश उपनाम नाम का उपयोग नहीं करेंगे।
दूसरे अंतर में "एकाधिक विलय घोषणा" का क्या अर्थ है? – jrahhali
@jrahhali मुझे लगता है कि * इस एसओ थ्रेड में * संवर्धित * परिदृश्य (http://stackoverflow.com/questions/36782896/in-typescript-what-is-the-difference-between-type-and-interface) उत्तर आपका प्रश्न – superjos
@jrahhali यदि आप दो बार इंटरफेस को परिभाषित करते हैं, तो टाइपस्क्रिप्ट उन्हें एक में विलीन कर देता है। –