Поиск по сайту
Ctrl + K
Вопросы по TS

Какие модификаторы доступа поддерживает TypeScript?

TypeScript, являясь надстройкой над JavaScript, предоставляет несколько модификаторов доступа, которые помогают контролировать доступ к свойствам и методам классов. Эти модификаторы обеспечивают инкапсуляцию и позволяют организовать код более структурированным и безопасным образом. Рассмотрим поддерживаемые модификаторы доступа:

1. public

  • Описание: Это модификатор по умолчанию. Свойства и методы, объявленные с модификатором public, доступны из любого места, как внутри класса, так и вне его.
  • Пример:
class User {
    public name: string;

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

    public greet() {
        console.log(`Привет, меня зовут ${this.name}`);
    }
}

const user = new User('Алекс');
user.greet(); // Привет, меня зовут Алекс

2. private

  • Описание: Свойства и методы, объявленные с модификатором private, доступны только внутри самого класса, в котором они были объявлены. Они не могут быть доступны из подклассов или из экземпляров класса.
  • Пример:
class Account {
    private balance: number;

    constructor(initialBalance: number) {
        this.balance = initialBalance;
    }

    public deposit(amount: number) {
        this.balance += amount;
        console.log(`Баланс после депозита: ${this.balance}`);
    }

    public getBalance() {
        return this.balance;
    }
}

const account = new Account(100);
account.deposit(50); // Баланс после депозита: 150
// console.log(account.balance); // Ошибка: свойство 'balance' недоступно

3. protected

  • Описание: Свойства и методы, объявленные с модификатором protected, могут быть доступны только внутри самого класса и в классах-наследниках. Это позволяет защищать данные, но при этом делать их доступными для наследующих классов.
  • Пример:
class Animal {
    protected name: string;

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

class Dog extends Animal {
    public bark() {
        console.log(`${this.name} говорит: Гав!`);
    }
}

const dog = new Dog('Рекс');
dog.bark(); // Рекс говорит: Гав!
// console.log(dog.name); // Ошибка: свойство 'name' недоступно

Резюме

Модификаторы доступа в TypeScript позволяют разработчикам управлять видимостью свойств и методов в классах. Используйте их для обеспечения инкапсуляции и улучшения структуры вашего кода. Если вы хотите, чтобы свойство или метод были доступны отовсюду — используйте public. Если хотите защитить их от внешнего доступа — используйте private. А если вам нужно разрешить доступ только в наследниках — protected будет самым подходящим выбором.

Содержание:
Редактировать