Модификаторы видимости TypeScript раскрыты: объяснение общедоступных, частных и защищенных

  1. Public (по умолчанию):
    Модификатор public — это модификатор видимости по умолчанию в TypeScript. Он позволяет получить доступ к членам класса из любого места, как внутри класса, так и за его пределами. Вот пример, иллюстрирующий его использование:
class Car {
  public brand: string;
  constructor(brand: string) {
    this.brand = brand;
  }
  public startEngine() {
    console.log(`Starting the ${this.brand} engine...`);
  }
}
const myCar = new Car("Tesla");
myCar.startEngine(); // Output: Starting the Tesla engine...

В приведенном выше примере свойство brandи метод startEngineпомечены как общедоступные. Следовательно, к ним можно получить доступ снаружи класса.

  1. Private:
    Модификатор Private ограничивает доступ к членам класса только внутри содержащего его класса. Это предотвращает доступ извне класса, включая производные классы. Давайте посмотрим на это в действии:
class BankAccount {
  private accountBalance: number;
  constructor(initialBalance: number) {
    this.accountBalance = initialBalance;
  }
  private checkBalance() {
    console.log(`Current balance: $${this.accountBalance}`);
  }
  public deposit(amount: number) {
    this.accountBalance += amount;
    this.checkBalance(); // Accessible within the class
  }
}
const myAccount = new BankAccount(1000);
myAccount.deposit(500); // Output: Current balance: $1500
myAccount.checkBalance(); // Compilation Error: Property 'checkBalance' is private and only accessible within class 'BankAccount'.

В приведенном выше примере свойство accountBalanceи метод checkBalanceпомечены как частные. К ним нельзя получить доступ извне класса.

  1. Защищено:
    Модификатор protected обеспечивает доступ к членам класса внутри содержащего его класса и его производных классов. Он ограничивает доступ извне иерархии классов. Давайте посмотрим:
class Animal {
  protected name: string;
  constructor(name: string) {
    this.name = name;
  }
  protected makeSound() {
    console.log(`The ${this.name} makes a sound.`);
  }
}
class Dog extends Animal {
  public bark() {
    this.makeSound(); // Accessible within the derived class
  }
}
const myDog = new Dog("Buddy");
myDog.bark(); // Output: The Buddy makes a sound.
myDog.makeSound(); // Compilation Error: Property 'makeSound' is protected and only accessible within class 'Animal' and its subclasses.

В приведенном выше примере свойство nameи метод makeSoundв классе Animalпомечены как защищенные. Доступ к ним возможен внутри производного класса (Dog), но не снаружи иерархии классов.

Понимание модификаторов видимости имеет решающее значение для создания удобного и безопасного кода TypeScript. Соответствующим образом используя public, Private и protected, вы можете контролировать доступ к членам вашего класса и обеспечивать инкапсуляцию и целостность данных.

В заключение, TypeScript предоставляет три модификатора видимости для управления доступностью членов класса: общедоступный, закрытый и защищенный. Public — это модификатор по умолчанию, разрешающий доступ из любого места, тогда как Private ограничивает доступ к содержащему классу, а protected разрешает доступ внутри иерархии классов. Используйте эти модификаторы с умом, чтобы добиться инкапсуляции и удобства сопровождения кода.

Обладая новыми знаниями о модификаторах видимости TypeScript, вы теперь готовы писать более безопасные и надежные приложения TypeScript. Приятного кодирования!