Разбираем важный аспект TypeScript — спецификаторы, которые играют ключевую роль в определении видимости и доступа к свойствам и методам классов. В этой статье мы рассмотрим их типы, синтаксис и практические примеры использования.
Спецификатор — это ключевое слово, которое определяет уровень доступа к членам класса (свойствам и методам). TypeScript поддерживает три основных спецификатора:
💡 Важно: В отличие от JavaScript, где все свойства по умолчанию публичные, TypeScript позволяет точно контролировать доступ к данным, что улучшает инкапсуляцию и безопасность кода.
Пример класса с публичными свойствами:
class User {
public name: string;
constructor(name: string) {
this.name = name;
}
public greet() {
return `Привет, ${this.name}!`;
}
}
Здесь name и метод greet доступны из любого места программы.
Пример защиты внутренних данных:
class BankAccount {
private balance: number;
constructor(initialBalance: number) {
this.balance = initialBalance;
}
public getBalance(): number {
return this.balance;
}
}
В этом случае прямой доступ к balance извне класса невозможен — только через метод getBalance().
Пример использования в наследовании:
class Vehicle {
protected speed: number = 0;
public accelerate(amount: number): void {
this.speed += amount;
}
}
class Car extends Vehicle {
public getSpeed(): number {
return this.speed; // Доступно, так как speed protected
}
}
⚡ Совет: Используйте protected для членов класса, которые должны быть доступны подклассам, но скрыты от внешнего кода. Это создает четкую границу API вашего класса.
Различие между private и protected особенно важно в больших проектах. Private-члены абсолютно изолированы и не могут быть переопределены или доступны в подклассах, тогда как protected предоставляет контролируемый доступ для расширения функциональности.