- 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помечены как общедоступные. Следовательно, к ним можно получить доступ снаружи класса.
- 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помечены как частные. К ним нельзя получить доступ извне класса.
- Защищено:
Модификатор 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. Приятного кодирования!