Модификаторы доступа играют решающую роль в TypeScript, позволяя разработчикам контролировать видимость и доступность членов класса. В этой статье мы рассмотрим различные модификаторы доступа, доступные в TypeScript, а также примеры кода, иллюстрирующие их использование. Понимание модификаторов доступа необходимо для достижения инкапсуляции и поддержания целостности кода в парадигмах объектно-ориентированного программирования (ООП).
- Модификатор публичного доступа:
Модификатор публичного доступа — это модификатор по умолчанию в 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.
- Модификатор частного доступа:
Модификатор частного доступа ограничивает доступ к членам класса внутри одного класса. К ним нельзя получить доступ извне класса или его подклассов. Вот пример:
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'.
- Модификатор защищенного доступа:
Модификатор защищенного доступа обеспечивает доступ к членам класса внутри класса и его подклассов. К ним нельзя получить доступ извне иерархии классов. Вот пример:
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.