Loading lessons...
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
| Modifier | Accessible inside Class | Accessible in Subclasses | Accessible from External Instances |
|---|---|---|---|
public (default) | Yes | Yes | Yes |
protected | Yes | Yes | No |
private | Yes | No | No |
#field (JS Private) | Yes | No | No (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
publicby default. privatehides fields from subclasses and external calls (compile-time check).protectedallows subclass access but blocks external access.- Parameter properties in constructors concise class definitions.