में इंटरफ़ेस और कक्षा इंटरफ़ेस और कक्षाओं के बीच बहुत बड़ा अंतर है। दरअसल, एक वर्ग एक संदर्भ-प्रकार का प्रतिनिधित्व करता है, ताकि हम वास्तव में उस वर्ग पर मॉडलिंग की वस्तुएं बना सकें, जबकि इंटरफेस अनुबंधों के लिए हैं जो एक निश्चित व्यवहार के अस्तित्व को सुनिश्चित करने के लिए एक वर्ग संकेत देते हैं। विशेष रूप से हम इंटरफेस के उदाहरण नहीं बना सकते हैं।टाइपस्क्रिप्ट
इंटरफेस के साथ पूरा बिंदु व्यवहार का पर्दाफाश करना है। एक वर्ग ने कहा व्यवहार के एक स्पष्ट कार्यान्वयन के द्वारा इसे लागू करता है।
उस स्थिति में, हालांकि इंटरफेस गुण हो सकते हैं, अधिकांश समय हम व्यवहार संबंधी मुद्दों के कारण इंटरफेस की परवाह करते हैं। तो अधिकांश प्रकार, इंटरफेस केवल व्यवहार के अनुबंध हैं।
दूसरी तरफ, मुझे कुछ ऐसा लगता है जिसने मुझे काफी असहज बना दिया है, और सच में मैंने इसे एक से अधिक बार देखा है, जो इस प्रश्न का कारण है।
एक ट्यूटोरियल में मैं इस देखा:
export interface User {
name: string; // required with minimum 5 chracters
address?: {
street?: string; // required
postcode?: string;
}
}
लेकिन एक मिनट प्रतीक्षा करें। क्यों User
एक इंटरफेस है? अगर हमें लगता है कि सी #, User
एक इंटरफ़ेस नहीं होना चाहिए। सच में, इसे देखते हुए, ऐसा लगता है कि हम व्यवहार के अनुबंध के बजाय डेटा प्रकार User
को परिभाषित कर रहे हैं।
में सोच रही थी जैसे हम सी # में करते हैं, स्वाभाविक बात यह होगा:
export class User {
public name: string;
public address: Address;
}
export class Address {
public street: string;
public postcode: string;
}
लेकिन इंटरफेस का उपयोग कर की तरह हम वर्गों के साथ करते हैं, सिर्फ एक डेटा प्रकार को परिभाषित करने के बजाय, के एक अनुबंध को परिभाषित करने की इस बात व्यवहार, टाइपस्क्रिप्ट में बहुत आम लगता है।
तो टाइपस्क्रिप्ट में किस इंटरफेस का अर्थ है? लोग टाइपस्क्रिप्ट में इंटरफेस का उपयोग क्यों करते हैं जैसे कि हम सी # में क्लिक्स का उपयोग करते हैं? टाइपस्क्रिप्ट में इंटरफ़ेस का सही ढंग से उपयोग कैसे किया जाना चाहिए: व्यवहार के अनुबंध स्थापित करने के लिए, या गुणों को परिभाषित करने और वस्तु के पास होना चाहिए?
सी # से बहुत कम टाइपस्क्रिप्ट पर लागू होता है क्योंकि बाद वाला [संरचनात्मक रूप से टाइप किया गया] (https://www.typescriptlang.org/docs/handbook/type-compatibility.html) है। साथ ही, कुछ गुणों को पूरी तरह से व्यवहार माना जा सकता है :-) – artem
मुझे नहीं पता कि आप किस प्रकार के उत्तर की उम्मीद कर रहे हैं। आप इस तरह की भाषाओं की तुलना नहीं कर सकते हैं। – nozzleman
मुझे विश्वास है कि सी # उद्धृत करने में गलती थी। मैं भाषाओं की तुलना नहीं करना चाहता, न ही इस तरह के कुछ भी। मैंने बस इंटरफ़ेस के उपयोग के उदाहरण के रूप में सी # के बारे में बात की थी जिसका उपयोग मैं करता हूं। मैं बस इतना जानना चाहता हूं कि टाइपस्क्रिप्ट में इंटरफेस या कक्षाओं का उपयोग कब करना चाहिए, क्योंकि लोग उनमें से प्रत्येक के लिए एक विशिष्ट उद्देश्य रखने के बजाय, दोनों एक ही उद्देश्य के लिए उनका उपयोग करते हैं। जैसा कि मैंने कहा, वही कक्षाओं और इंटरफेस दोनों का उपयोग करके ऊपर पूरा किया जा सकता है, और मैंने लोगों को दोनों तरीकों से बाहर कर दिया है, जो मुझे भ्रमित करता है। सवाल है * बस टाइपस्क्रिप्ट * के बारे में, सी # सिर्फ एक उदाहरण था। – user1620696