# एक्सेस मॉडिफायर और readonly — टाइपस्क्रिप्ट

Source: https://www.geekswithgeeks.com/hi/typescript/ts-access-modifiers-implements

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

## public / private / protected

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

```typescript
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'.
```

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

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

```typescript
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 और निर्माण-समय के लिए अच्छा है।

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

- [ ] public
- [ ] private
- [x] protected

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