मुख्य सामग्री पर जाएं
मॉड्यूल 4 · पाठ 1 का 2पाठ्यक्रम में 7/14~15 min
मॉड्यूल पाठ (1/2)

कक्षाएं और संशोधक

टाइपस्क्रिप्ट मानक ES6 कक्षाओं को शक्तिशाली ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) सुविधाओं, जैसे स्थिर टाइपिंग, एक्सेस संशोधक और शॉर्टहैंड पैरामीटर गुणों के साथ विस्तारित करता है।

कक्षाएं और एक्सेस संशोधक

टाइपस्क्रिप्ट में, आप तीन मुख्य कीवर्ड का उपयोग करके कक्षा के सदस्यों, गुणों और विधियों की दृश्यता को नियंत्रित कर सकते हैं:

  • public (डिफ़ॉल्ट): सदस्य कहीं से भी पहुंच योग्य है।
  • private: सदस्य केवल उस वर्ग के भीतर पहुंच योग्य है जो इसे परिभाषित करता है।
  • protected: सदस्य वर्ग और उसके उपवर्गों (विरासत) के भीतर पहुंच योग्य है।
TS
class Animal {
  public name: string;
  private age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  public getAge(): number {
    return this.age;
  }
}

पैरामीटर गुण

टाइपस्क्रिप्ट किसी क्लास सदस्य को सीधे कंस्ट्रक्टर में घोषित करने और आरंभ करने के लिए एक शॉर्टहैंड सिंटैक्स प्रदान करता है। एक एक्सेस संशोधक के साथ एक कंस्ट्रक्टर पैरामीटर को उपसर्ग करके, संपत्ति स्वचालित रूप से बनाई और असाइन की जाती है:

TS
// This syntax does exactly the same as the previous example!
class Animal {
  constructor(
    public name: string,
    private age: number,
  ) {}
}

इंटरफ़ेस लागू करना

एक वर्ग implements कीवर्ड का उपयोग करके एक या अधिक इंटरफ़ेस लागू कर सकता है। यह सुनिश्चित करता है कि वर्ग सभी आवश्यक तरीकों और गुणों को परिभाषित करके एक विशिष्ट अनुबंध का पालन करता है:

TS
interface Flyable {
  fly(altitude: number): void;
}

class Bird implements Flyable {
  constructor(public name: string) {}

  fly(altitude: number): void {
    console.log(`${this.name} is flying at ${altitude} meters.`);
  }
}

विरासत और super

टाइपस्क्रिप्ट पूरी तरह से क्लास इनहेरिटेंस का समर्थन करता है। एक क्लास extends कीवर्ड का उपयोग करके दूसरी क्लास का विस्तार कर सकती है। यदि उपवर्ग एक कंस्ट्रक्टर को परिभाषित करता है, तो उसे this तक पहुंचने से पहले super() फ़ंक्शन का उपयोग करके बेस क्लास कंस्ट्रक्टर को कॉल करना होगा:

TS
class Person {
  constructor(public name: string) {}
}

class Student extends Person {
  constructor(
    name: string,
    public grade: number,
  ) {
    super(name); // Calls the Person constructor
  }
}

खुद कोशिश करना

अभ्यास 1: कार क्लास और निजी संशोधक

व्यायाम#ts.m4.l1.e1
प्रयास: 0लोड हो रहा है...

कार नामक एक वर्ग घोषित करें। इसमें कंस्ट्रक्टर में परिभाषित एक रीडओनली मॉडल प्रॉपर्टी (स्ट्रिंग), 0 से शुरू की गई एक निजी माइलेज प्रॉपर्टी (संख्या), एक सार्वजनिक विधि ड्राइव (मील: संख्या: शून्य) होनी चाहिए जो मील के हिसाब से माइलेज बढ़ाती है, और एक गेटर या विधि गेटमाइलेज (): संख्या जो माइलेज लौटाती है।

संपादक लोड हो रहा है...
संकेत दिखाएँ

निजी माइलेज का उपयोग करें: संख्या = 0; वेरिएबल को प्राइवेट और कंस्ट्रक्टर(पब्लिक रीडओनली मॉडल: स्ट्रिंग) {} को शॉर्टहैंड बनाने के लिए।

3 प्रयासों के बाद समाधान उपलब्ध है

अभ्यास 2: आकृति इंटरफ़ेस और वृत्त वर्ग

व्यायाम#ts.m4.l1.e2
प्रयास: 0लोड हो रहा है...

सर्कल क्लास को लागू करके कोड को पूरा करें जो शेप इंटरफ़ेस को लागू करता है। क्लास में कंस्ट्रक्टर के माध्यम से रीडओनली रेडियस प्रॉपर्टी (संख्या) सेट होनी चाहिए, और getArea(): नंबर (मैथ.पीआई * रेडियस * रेडियस लौटाने वाला) लागू करना चाहिए।

संपादक लोड हो रहा है...
संकेत दिखाएँ

सर्कल क्लास पर इम्प्लीमेंट्स शेप का उपयोग करें और getArea(): नंबर विधि को परिभाषित करें।

3 प्रयासों के बाद समाधान उपलब्ध है

अभ्यास 3: सार वाहन वर्ग और मोटरसाइकिल उपवर्ग

व्यायाम#ts.m4.l1.e3
प्रयास: 0लोड हो रहा है...

मोटरसाइकिल नामक एक वर्ग घोषित करें जो अमूर्त वर्ग वाहन का विस्तार करता है। इसे मेक (दिस.मेक) और 'स्टार्टेड' के बाद स्ट्रिंग 'मोटरसाइकिल' को वापस करने के लिए स्टार्ट() विधि को लागू करना होगा।

संपादक लोड हो रहा है...
संकेत दिखाएँ

क्लास मोटरसाइकिल एक्सटेंड्स व्हीकल का उपयोग करें और स्टार्ट(): स्ट्रिंग विधि लागू करें जो सही स्ट्रिंग लौटाती है।

3 प्रयासों के बाद समाधान उपलब्ध है

अभ्यास 4: पैरामीटर गुण और वंशानुक्रम

व्यायाम#ts.m4.l1.e4
प्रयास: 0लोड हो रहा है...

कर्मचारी नामक एक वर्ग बनाएं जो कंस्ट्रक्टर शॉर्टहैंड का उपयोग करके केवल पढ़ने योग्य संपत्ति आईडी (संख्या) और सार्वजनिक संपत्ति नाम (स्ट्रिंग) को परिभाषित करता है। फिर, एक क्लास डेवलपर बनाएं जो कर्मचारी का विस्तार करता है और कंस्ट्रक्टर के माध्यम से एक सार्वजनिक संपत्ति विभाग (स्ट्रिंग) जोड़ता है।

संपादक लोड हो रहा है...
संकेत दिखाएँ

डेवलपर कंस्ट्रक्टर में सुपर (आईडी, नाम) का उपयोग करें और कंस्ट्रक्टर के माध्यम से संपत्ति को परिभाषित करने के लिए सार्वजनिक विभाग का उपयोग करें।

3 प्रयासों के बाद समाधान उपलब्ध है