2017-03-26 9 views
6

इन प्रवाह प्रकार परिभाषाओं के बीच क्या अंतर है?फ्लो इंटरफेस बनाम प्रकार

interface Vehicle { 
    start(): void, 
    stop(): void 
} 

type Vehicle = { 
    start(): void, 
    stop(): void 
}; 

जहां तक ​​मैं कह सकता हूं, उनका उपयोग उसी तरह किया जा सकता है।

उत्तर

6

interface एस और type एस समान हैं, और अंतर ज्यादातर ऐतिहासिक है जो मेरा मानना ​​है। property variance को लागू करने के हालिया परिवर्तनों ने interface के व्यवहार के साथ type का व्यवहार भी लाया। मेरा मानना ​​है कि लक्ष्य अंततः उन्हें समान बनाना है और संभवतः interface को भी हटा देना है।

अभी भी सूक्ष्म अंतर हो सकता है लेकिन अधिकांश उपयोगों के लिए मुझे नहीं लगता कि आपको एक अंतर दिखाई देगा। नहीं एक type -

एक प्रमुख अंतर यह है कि आप implements (जैसे class Foo implements Bar {...}) उपयोग करना चाहते हैं तो Bar एक interface होना चाहिए है। हालांकि यह ध्यान देने योग्य है कि एक इंटरफेस को कार्यान्वित करने के रूप में कक्षा को चिह्नित करना अनिवार्य नहीं है। फ्लो संरचनात्मक उपप्रकार लागू करता है ताकि आपके पास कक्षा का उदाहरण हो, तो आप इसे किसी ऐसे इंटरफ़ेस को पास कर सकते हैं जो संगत type की अपेक्षा करता है, यह स्पष्ट रूप से यह इंगित करता है कि कक्षा किसी विशेष इंटरफ़ेस को लागू करती है।

संबंधित मुद्दे