Why does TypeScript not raise a warning when an interface is overridden -
इंटरफ़ेस क्लॉकइन्फ़ेफेस {setTime (d: दिनांक); } क्लास क्लॉक ने क्लॉक इन्टरफेस को कार्यान्वित किया है {// मैं इसे एक कंपाइल एरर को उठाने की उम्मीद करता हूं / क्योंकि यह इंटरफ़ेस सेट टाइम (डी) {// कुछ लॉजिक को कार्यान्वित नहीं करता है, जिसकी तिथि की आवृत्ति की आवश्यकता है}} var cc = new Clock (); // अन्यथा यह आपको किसी भी बुरी चीजें करने के लिए अनुमति देता है जो आप चाहते हैं cc.setTime (234); cc.setTime ( '234'); cc.setTime ([]); निश्चित रूप से setTime (d) { से setTime (d: date) {) को बदलते हुए चेतावनी का कारण बनता है setTime के अंतिम 3 आविष्कार। एक सरल उदाहरण बस है:
वर्ग घड़ी ClockInterface लागू {setTime () {// कुछ तर्क जिसे तिथि की एक आवृत्ति की जरूरत है}}
इंटरफ़ेस के लिए वर्ग प्रतिस्थापन योग्य है, इसलिए यह कार्यान्वयन करता है। जब आप लागू करता है "निर्दिष्ट अंतरफलक के लिए असाइन किया गया वर्ग है?" इस मामले पर विचार करें: इंटरफ़ेस कैटविटेरिनरीयन {चेकअप (ए: कैट): शून्य; } इंटरफ़ेस मानवडॉक्टर {चेकअप (ए: मानव): शून्य; } वर्ग UniversalDoctor लागू CatVeterinarian, HumanDoctor {चेकअप (ए: पशु) {// ...}} एक मिनट के लिए मान लें कि यह था एक त्रुटि: आप इसे कैसे तय करेंगे? आपका यूनिवर्सल डॉकटर वर्ग वास्तव में दोनों CatVeterinarian और मानवडॉक्टर के रूप में कार्य कर सकता है। आपके पास ऐसा करने के लिए कुछ भी नहीं बचा है। तथ्य यह है कि आप घड़ी को गैर- दिनांक के साथ जोड़ सकते हैं बस एक अतिरिक्त कार्यक्षमता का टुकड़ा - मनमाने ढंग से सेटटाइम तर्क स्वीकार करने की क्षमता जाहिर है यह कम्पाइलर के लिए बेतुका होगा कि "आपका वर्ग बहुत अधिक करता है, यह उस इंटरफ़ेस को संतुष्ट नहीं करता *; लगभग किसी भी इंटरफ़ेस के प्रत्येक क्रियान्वयन में कुछ अतिरिक्त सामग्री होती है जो कि इसका कुछ हिस्सा नहीं है मूल इंटरफ़ेस।
Comments
Post a Comment