Понимание модификаторов доступа в TypeScript: подробное руководство

Модификаторы доступа играют решающую роль в TypeScript, позволяя разработчикам контролировать видимость и доступность членов класса. В этой статье мы рассмотрим различные модификаторы доступа, доступные в TypeScript, а также примеры кода, иллюстрирующие их использование. Понимание модификаторов доступа необходимо для достижения инкапсуляции и поддержания целостности кода в парадигмах объектно-ориентированного программирования (ООП).

  1. Модификатор публичного доступа:
    Модификатор публичного доступа — это модификатор по умолчанию в TypeScript, позволяющий получать доступ к членам класса из любого места. Вот пример:
class Car {
  public brand: string;

  constructor(brand: string) {
    this.brand = brand;
  }

  public startEngine(): void {
    console.log(`Starting the ${this.brand} engine.`);
  }
}
let myCar = new Car("Tesla");
console.log(myCar.brand); // Output: Tesla
myCar.startEngine(); // Output: Starting the Tesla engine.
  1. Модификатор частного доступа:
    Модификатор частного доступа ограничивает доступ к членам класса внутри одного класса. К ним нельзя получить доступ извне класса или его подклассов. Вот пример:
class BankAccount {
  private accountNumber: string;
  private balance: number;

  constructor(accountNumber: string, balance: number) {
    this.accountNumber = accountNumber;
    this.balance = balance;
  }

  private deduct(amount: number): void {
    this.balance -= amount;
  }

  public withdraw(amount: number): void {
    this.deduct(amount);
    console.log(`Withdrawn ${amount} from account ${this.accountNumber}.`);
  }
}
let myAccount = new BankAccount("123456789", 1000);
myAccount.withdraw(500); // Output: Withdrawn 500 from account 123456789.
console.log(myAccount.accountNumber); // Error: Property 'accountNumber' is private and only accessible within class 'BankAccount'.
  1. Модификатор защищенного доступа:
    Модификатор защищенного доступа обеспечивает доступ к членам класса внутри класса и его подклассов. К ним нельзя получить доступ извне иерархии классов. Вот пример:
class Animal {
  protected name: string;

  constructor(name: string) {
    this.name = name;
  }

  protected makeSound(): void {
    console.log(`${this.name} makes a sound.`);
  }
}
class Dog extends Animal {
  public bark(): void {
    this.makeSound();
  }
}
let myDog = new Dog("Charlie");
myDog.bark(); // Output: Charlie makes a sound.
console.log(myDog.name); // Error: Property 'name' is protected and only accessible within class 'Animal' and its subclasses.

Модификаторы доступа в TypeScript предоставляют мощный механизм управления видимостью и доступностью членов класса. Эффективно используя модификаторы доступа, разработчики могут добиться инкапсуляции, повысить удобство сопровождения кода и обеспечить правильное сокрытие данных. Понимание этих модификаторов доступа имеет решающее значение для написания чистого и надежного объектно-ориентированного кода TypeScript.