В этом руководстве вы узнаете, как использовать модификатор доступа TypeScript readonly — только для чтения, чтобы пометить свойства класса как неизменяемые свойства.
TypeScript предоставляет модификатор только для чтения, который позволяет помечать свойства класса как неизменяемые. Присвоение свойству только для чтения может произойти только в одном из двух мест:
- В декларации свойств.
- В конструкторе того же класса.
Чтобы пометить свойство как неизменное, используйте ключевое слово readonly
. Ниже показано, как объявить свойство только для чтения в классе Person
:
class Person { readonly birthDate: Date; constructor(birthDate: Date) { this.birthDate = birthDate; } }
В этом примере свойство birthdate
— это свойство только для чтения, которое инициализируется в конструкторе класса Person
.
Следующие попытки переназначить свойство birthDate
приводят к ошибке:
let person = new Person(new Date(1990, 12, 25)); person.birthDate = new Date(1991, 12, 25); // Compile error
Как и другие модификаторы доступа в TypeScript, вы можете объединить объявление и инициализацию свойства только для чтения в конструкторе следующим образом:
class Person { constructor(readonly birthDate: Date) { this.birthDate = birthDate; } }
Сравнение readonly и const
Ниже показаны различия между readonly и const:
readonly | const | |
Использовать для | Свойства класса | Переменные |
Инициализация | В объявлении или в конструкторе того же класса | В декларации |
Заключение
- Используйте модификатор доступа только для чтения в TypeScript, чтобы пометить свойство класса как неизменяемое.
- Свойство readonly должно быть инициализировано как часть объявления или в конструкторе того же класса.