0Pricing
TypeScript Academy · Lekcja

Modyfikatory public, private i protected

Kontroluj dostęp do składowych klasy za pomocą modyfikatorów.

Modyfikatory public, private i protected to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej TypeScript Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs TypeScript Academy zawiera 4 lekcji w sumie.

Wprowadzenie

Modyfikatory dostępu TypeScriptu kontrolują widoczność członków klasy. Pomagają wymuszać enkapsulację i zapobiegać niezamierzonemu użyciu.

public: dostęp z dowolnego miejsca

`public` jest modyfikatorem domyślnym. Członkowie publiczni są dostępni z dowolnego miejsca — wewnątrz klasy, w podklasach i w kodzie zewnętrznym.
class Car {
  public brand: string;
  constructor(brand: string) { this.brand = brand; }
}
const c = new Car('Toyota');
console.log(c.brand); // OK

private: dostęp wyłącznie w klasie

Członkowie prywatni są dostępni wyłącznie w klasie, w której zostały zadeklarowane. Podklasy i kod zewnętrzny nie mogą uzyskać do nich dostępu.
class BankAccount {
  private balance: number = 0;
  deposit(n: number) { this.balance += n; }
}
const a = new BankAccount();
// a.balance; // Error!

protected: dostęp w klasie i podklasach

Członkowie chronieni są dostępni w klasie, w której zostały zadeklarowane, oraz w dowolnej podklasie, ale nie w kodzie zewnętrznym.
class Animal {
  protected name: string;
  constructor(name: string) { this.name = name; }
}
class Dog extends Animal {
  bark() { console.log(this.name + ' says woof!'); } // OK
}

Wymuszanie wyłącznie w czasie kompilacji

Modyfikatory dostępu TypeScriptu są jedynie kontrolą w czasie kompilacji. Wygenerowany kod JavaScript nadal ma publiczne właściwości — w czasie wykonywania nie ma żadnego wymuszania dostępu.

Prywatne elementy JavaScriptu z użyciem #

JavaScript ma natywne prywatne pola z użyciem `#`, których prywatność jest wymuszana w czasie wykonywania. TypeScript obsługuje tę składnię obok własnego słowa kluczowego `private`.
class Counter {
  #count = 0; // runtime private (JavaScript)
  increment() { this.#count++; }
  get value() { return this.#count; }
}

Modyfikator readonly

Właściwości `readonly` można ustawiać tylko podczas konstruowania obiektu. Po zainicjalizowaniu nie można ich zmieniać.
class User {
  readonly id: number;
  constructor(id: number) { this.id = id; }
}
const u = new User(1);
// u.id = 2; // Error!

Łączenie modyfikatorów

Modyfikatory dostępu można łączyć z `readonly` w przypadku tej samej właściwości.
class Config {
  constructor(
    public readonly host: string,
    private readonly port: number
  ) {}
}

private w konstruktorze

Prywatny konstruktor uniemożliwia tworzenie instancji z zewnątrz. Zamiast niego proszę używać statycznych metod fabrycznych.
class Singleton {
  private static instance: Singleton;
  private constructor() {}
  static getInstance(): Singleton {
    return this.instance ??= new Singleton();
  }
}

Konstruktor protected

Chroniony konstruktor uniemożliwia bezpośrednie tworzenie instancji, ale pozwala podklasom wywołać go za pomocą `super()`.
class Base {
  protected constructor(public id: number) {}
}
class Derived extends Base {
  constructor(id: number) { super(id); }
}

Modyfikatory dostępu nie zwiększają narzutu w czasie wykonywania

Ponieważ TypeScript usuwa wszystkie informacje o typach, modyfikatory dostępu nie mają żadnego wpływu na rozmiar ani wydajność skompilowanego kodu JavaScript.

Szybki sprawdzian

Który modyfikator dostępu sprawia, że członek klasy jest dostępny w klasie ORAZ jej podklasach, ale NIE w kodzie zewnętrznym?

Podsumowanie

Proszę używać public (domyślnego) w przypadku dostępnych członków, private w przypadku enkapsulowanych elementów wewnętrznych oraz protected w przypadku członków przeznaczonych dla podklas. Proszę dodać readonly, aby zapobiec modyfikacji po utworzeniu obiektu.

Często zadawane pytania

Czy lekcja „Modyfikatory public, private i protected” jest bezpłatna?

Tak — pełny tekst „Modyfikatory public, private i protected” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu TypeScript Academy, przejdź na CoddyKit PRO. Kurs TypeScript Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Modyfikatory public, private i protected”?

Kontroluj dostęp do składowych klasy za pomocą modyfikatorów. Ćwiczysz TypeScript Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć TypeScript Academy?

Nie wymagamy żadnego doświadczenia. TypeScript Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Modyfikatory public, private i protected”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji TypeScript Academy?

Tak. Każda lekcja TypeScript Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Klasy i konstruktory w TypeScript
  2. Modyfikatory public, private i protected
  3. Właściwości readonly i właściwości parametrów
  4. Implementowanie interfejsów za pomocą klas
← Powrót do TypeScript Academy