public, private, protected

Modyfikatory dostępu określające, skąd można używać pól i metod klasy.

Na tej stronie

Przykład

#
TypeScript
class Wallet {
  private balance = 0

  constructor(public readonly owner: string) {}

  add(gems: number): void {
    this.balance += gems
  }

  get total(): number {
    return this.balance
  }
}

const wallet = new Wallet('Ania')
wallet.add(50)
wallet.add(20)
console.log(wallet.owner, wallet.total)
Wynik
Ania 70

Definicja i zastosowanie

#

Pola i metody klas są domyślnie publiczne (public), czyli dostępne wszędzie. private ogranicza dostęp do wnętrza klasy, a protected do klasy i jej klas pochodnych.

Modyfikatory TypeScriptu działają na etapie kompilacji. Po kompilacji do JavaScriptu pole private jest zwykłą właściwością. Jeśli potrzebujesz prawdziwej prywatności w działającym programie, użyj natywnych pól JavaScriptu z #.

Skrót „parameter properties” pozwala zadeklarować i przypisać pole w jednym miejscu: constructor(private name: string) {} tworzy prywatne pole name z wartością argumentu.

Składnia

#
Składnia
class Nazwa {
  public a: typ
  private b: typ
  protected c: typ
}

Więcej przykładów

#
Próba dostępu do pola prywatnego
TypeScript
wallet.balance = 1000
// Błąd: Property 'balance' is private and only accessible within class 'Wallet'.

Dobre praktyki

#
  • Do danych, które naprawdę nie powinny być dostępne z zewnątrz, używaj pól #, które działają też po kompilacji.
  • Skrót constructor(private x: T) oszczędza powtarzania deklaracji i przypisania.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.