जवाबों:
कीवर्ड extendsका उपयोग केवल इंटरफेस और कक्षाओं के लिए किया जा सकता है।
यदि आप केवल एक प्रकार घोषित करना चाहते हैं जिसमें अतिरिक्त गुण हैं, तो आप प्रतिच्छेदन प्रकार का उपयोग कर सकते हैं :
type UserEvent = Event & {UserId: string}
टाइपस्क्रिप्ट 2.2 के लिए अद्यतन करें , अब एक ऐसे इंटरफ़ेस का होना संभव है जो ऑब्जेक्ट-प्रकार को बढ़ाता है , यदि प्रकार कुछ प्रतिबंधों को संतुष्ट करता है:
type Event = {
name: string;
dateCreated: string;
type: string;
}
interface UserEvent extends Event {
UserId: string;
}
यह दूसरे तरीके से काम नहीं करता है - UserEventइंटरफ़ेस के रूप में घोषित किया जाना चाहिए, न कि typeयदि आप extendsसिंटैक्स का उपयोग करना चाहते हैं ।
और extend मनमाने प्रकारों के साथ उपयोग करना अभी भी असंभव है - उदाहरण के लिए, यह काम नहीं करता है यदि Eventकोई बाधा के बिना एक प्रकार का पैरामीटर है।
interface A<T> extends B<T> {blar}एक इंटरफ़ेस केवल ऑब्जेक्ट प्रकार या ऑब्जेक्ट प्रकारों के प्रतिच्छेदन को सांख्यिकीय रूप से ज्ञात सदस्यों के साथ
interface Identifiable<T> extends T { id: string }से मुझे त्रुटि मिलती है "एक इंटरफ़ेस केवल एक ऑब्जेक्ट प्रकार या ऑब्जेक्ट प्रकारों के प्रतिच्छेदन को सांख्यिकीय रूप से ज्ञात सदस्यों के साथ बढ़ा सकता है। (2312)"
आप प्रकारों को काट सकते हैं:
type TypeA = {
nameA: string;
};
type TypeB = {
nameB: string;
};
export type TypeC = TypeA & TypeB;
कहीं न कहीं आप अब कर सकते हैं:
const some: TypeC = {
nameB: 'B',
nameA: 'A',
};
आप जो हासिल करने की कोशिश कर रहे हैं वह इसके बराबर है
interface Event {
name: string;
dateCreated: string;
type: string;
}
interface UserEvent extends Event {
UserId: string;
}
जिस प्रकार से आपने परिभाषित किया है वह विरासत को निर्दिष्ट करने की अनुमति नहीं देता है, हालांकि आप अंतरंग प्रकार का उपयोग करके कुछ इसी तरह प्राप्त कर सकते हैं, जैसा कि आर्टेम ने बताया है।
interfaceजब मेरा वास्तव में मतलब हैtype
typeकीवर्ड को परिभाषित करने के लिए किया जाता है प्रकार उपनाम , नहीं इंटरफेस या वर्गों।