पाठ 17 / 26

एक्सेस मॉडिफायर और readonly

public, private और protected से दृश्यता नियंत्रित करें।

public / private / protected

public (डिफ़ॉल्ट) हर जगह दिखता है, private केवल क्लास के अंदर, protected क्लास और उसकी सबक्लास में।

class Account {
  public owner: string;
  private balance: number;

  constructor(owner: string, balance: number) {
    this.owner = owner;
    this.balance = balance;
  }
}

const acc = new Account("Ada", 500);
console.log(acc.balance);
// Error: Property 'balance' is private and only accessible within class 'Account'.

पैरामीटर प्रॉपर्टीज़

कंस्ट्रक्टर पैरामीटर में सीधे मॉडिफायर जोड़ने से प्रॉपर्टी एक ही चरण में घोषित और असाइन हो जाती है।

class Account {
  constructor(
    public owner: string,
    private balance: number,
    readonly openedOn: Date = new Date()
  ) {}
}
// equivalent to writing the fields + this.x = x manually

क्लास फ़ील्ड पर readonly

readonly फ़ील्ड कंस्ट्रक्टर में सेट हो सकती है पर बाद में कभी दोबारा असाइन नहीं होती — ID और निर्माण-समय के लिए अच्छा है।

त्वरित जाँच: कौन-सा मॉडिफायर सबक्लास से पहुँच देता है पर बाहरी कोड से नहीं?

  • public
  • private
  • protected
Answer

protected — protected सदस्य घोषित करने वाली क्लास और उसकी सबक्लास में दिखते हैं, पर बाहरी कोड को नहीं।