В этом уроке вы узнаете о модификаторах доступа в 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
разрешает доступ из любого места.