Lesson 21 +10 XP

Access Modifiers (public, private, protected)

Access Modifiers in TypeScript

TypeScript adds visibility control for class properties and methods using access modifiers: public, private, and protected.

Access Modifiers Matrix

ModifierAccessible inside ClassAccessible in SubclassesAccessible from External Instances
public (default)YesYesYes
protectedYesYesNo
privateYesNoNo
#field (JS Private)YesNoNo (Hard JS runtime privacy)

Parameter Properties Shorthand

TypeScript allows declaring and initializing class fields directly inside the constructor parameters:

class BankAccount {
  constructor(
    public readonly accountNumber: string,
    private balance: number,
    protected accountType: string
  ) {}

  deposit(amount: number): void {
    this.balance += amount;
  }

  getBalance(): number {
    return this.balance;
  }
}

const acc = new BankAccount("ACC123", 1000, "Checking");
console.log(acc.accountNumber); // ACC123
// console.log(acc.balance);    // Error: Property 'balance' is private.

TL;DR

  • Members are public by default.
  • private hides fields from subclasses and external calls (compile-time check).
  • protected allows subclass access but blocks external access.
  • Parameter properties in constructors concise class definitions.