В этом уроке вы узнаете о модификаторах доступа в TypeScript.
Модификаторы доступа изменяют видимость свойств и методов класса. TypeScript предоставляет три модификатора доступа:
- private
- protected
- public
Обратите внимание, что TypeScript логически управляет доступом во время компиляции, а не во время выполнения.
Частный модификатор
private ограничивает видимость только тем же классом. Когда вы добавляете модификатор private к свойству или методу, вы можете получить доступ к этому свойству или методу в том же классе. Любая попытка доступа к закрытым свойствам или методам вне класса приведет к ошибке во время компиляции.
В следующем примере показано, как использовать модификатор private для snn, firstName и lastName класса person :
class Person {
private ssn: string;
private firstName: string;
private lastName: string;
// ...
}Как только свойство private установлено, вы можете получить доступ к свойству ssn в конструкторе или методах класса Person. Например:
class Person {
private ssn: string;
private firstName: string;
private lastName: string;
constructor(ssn: string, firstName: string, lastName: string) {
this.ssn = ssn;
this.firstName = firstName;
this.lastName = lastName;
}
getFullName(): string {
return `${this.firstName} ${this.lastName}`;
}
}Следующие попытки доступа к свойству ssn вне класса вызовут ошибку:
let person = new Person('153-07-3130', 'John', 'Doe');
console.log(person.ssn); // compile errorПубличный модификатор
Модификатор public позволяет сделать свойства и методы класса доступными из любого места. Если вы не укажете какой-либо модификатор доступа для свойств и методов, по умолчанию они будут использовать общедоступный модификатор.
Например, метод Person getFullName() класса Public имеет модификатор public. Следующий пример явно добавляет модификатор public к getFullName() :
class Person {
// ...
public getFullName(): string {
return `${this.firstName} ${this.lastName}`;
}
// ...
}Это имеет тот же эффект, как если бы ключевое слово public было опущено.
Защищенный модификатор
Модификатор protected позволяет свойствам и методам класса быть доступными внутри одного класса и внутри подклассов.
Когда класс(дочерний класс) наследуется от другого класса (родительского класса), он является подклассом родительского класса.
Компилятор TypeScript выдаст ошибку, если вы попытаетесь получить доступ к защищенным свойствам или методам откуда-либо еще.
Чтобы добавить защищенный модификатор к свойству или методу, вы используете ключевое слово protected.
Пример:
class Person {
protected ssn: string;
// other code
}
Свойство ssn теперь защищено. Он будет доступен в классе Person и в любом классе, который наследуется от класса Person.
Класс Person объявляет два частных свойства и одно защищенное свойство. Его конструктор инициализирует эти свойства тремя аргументами.
Чтобы сделать код короче, TypeScript позволяет вам как объявлять свойства, так и инициализировать их в конструкторе следующим образом:
class Person {
constructor(protected ssn: string, private firstName: string, private lastName: string) {
this.ssn = ssn;
this.firstName = firstName;
this.lastName = lastName;
}
getFullName(): string {
return `${this.firstName} ${this.lastName}`;
}
}Когда вы рассматриваете видимость свойств и методов, рекомендуется начинать с наименее заметного модификатора доступа, который является закрытым.
Заключение
- TypeScript предоставляет три модификатора доступа к свойствам и методам класса:
private,protectedиpublic. privateразрешает доступ в пределах одного класса.- Модификатор
protectedразрешает доступ в рамках одного и того же класса и подклассов. - Модификатор
publicразрешает доступ из любого места.
