टाइपस्क्रिप्ट में संरक्षित मोडिफायर
निजी गुण और विधियाँ वंशजों द्वारा विरासत में नहीं मिलती हैं। हालाँकि, कभी-कभी हम चाहते हैं कि कोई गुण या विधि बाहरी रूप से उपलब्ध न हो, लेकिन वंशजों को विरासत में मिले। इस मामले में protected मोडिफायर का उपयोग करना चाहिए।
आइए व्यवहार में आज़माएँ। आइए अपनी कक्षा User में cape विधि को protected मोडिफायर का उपयोग करके संरक्षित के रूप में घोषित करें:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
आइए User कक्षा से विरासत में मिली Student कक्षा बनाएँ:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
आइए नाम प्रदर्शित करने वाली विधि जोड़ें:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
और अब वंशज की विधि के अंदर मूल की संरक्षित विधि का उपयोग करें:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // मूल विधि का उपयोग करें
}
}
आइए अपनी कक्षा की एक वस्तु बनाएँ:
let student: Student = new Student('john');
आइए छात्र को प्रदर्शित करने के लिए विधि का उपयोग करें:
console.log(student.showName());
लेकिन cape विधि को कक्षा के बाहर से कॉल करने का प्रयास एक त्रुटि का कारण बनेगा:
console.log(student.cape('test')); // त्रुटि
निम्नलिखित कक्षा दी गई है:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
इस कक्षा से Employee कक्षा को विरासत में लें, जो एक संरक्षित गुण salary जोड़ेगी, साथ ही सभी गुणों के गेटर्स, अपने स्वयं के और विरासत में मिले दोनों को जोड़ेगी।