Объясните Getters/Setters в TypeScript
Введение в Getters и Setters
В TypeScript (как и в JavaScript) Getters и Setters — это специальные методы, которые позволяют управлять доступом к свойствам объекта. Используя их, вы можете инкапсулировать логику, связанную с получением и установкой значений свойств, что делает код более удобным и гибким.
Что такое Getter?
Getter — это метод, который позволяет получить значение свойства. Он вызывается, как если бы это было обычное свойство объекта. Это полезно, когда нужно выполнить дополнительные операции перед тем, как вернуть значение.
Что такое Setter?
Setter — это метод, который позволяет установить значение свойства. Он также вызывается, как если бы это было обычное свойство. В ином случае, использование setter позволяет добавить логику проверки или обработки данных перед их установкой.
Пример использования Getters и Setters
Рассмотрим класс Person
, который имеет свойства firstName
и lastName
, и будем использовать Getters и Setters для работы с этими свойствами:
class Person {
private _firstName: string;
private _lastName: string;
constructor(firstName: string, lastName: string) {
this._firstName = firstName;
this._lastName = lastName;
}
// Getter для полного имени
get fullName(): string {
return `${this._firstName} ${this._lastName}`;
}
// Setter для изменения имени
set firstName(name: string) {
if (name.length < 3) {
throw new Error("Имя должно содержать минимум 3 символа.");
}
this._firstName = name;
}
// Getter для имени
get firstName(): string {
return this._firstName;
}
// Getter и Setter для фамилии
get lastName(): string {
return this._lastName;
}
set lastName(name: string) {
this._lastName = name;
}
}
// Пример использования
const person = new Person("Иван", "Иванов");
console.log(person.fullName); // Иван Иванов
person.firstName = "Петя"; // Устанавливаем новое имя
console.log(person.fullName); // Петя Иванов
// person.firstName = "А"; // Это вызовет ошибку
Как это работает
- Внутри класса,
firstName
иlastName
объявлены как приватные свойства_firstName
и_lastName
. Это помогает сохранить инкапсуляцию данных. - Мы определили Getter
fullName
, который возвращает полное имя, объединяяfirstName
иlastName
. - Установили Setter для
firstName
, который проверяет длину имени перед его установкой. Если имя слишком короткое, выбрасывается ошибка.
Заключение
Использование Getters и Setters в TypeScript позволяет вам более эффективно управлять доступом к свойствам объекта, добавляя необходимую логику для обработки данных. Это делает ваш код более чистым и легко поддерживаемым, а также предотвращает случайные ошибки при работе с публичными свойствами.
Научившись пользоваться Getters и Setters, вы сможете создавать более сложные и функциональные классы в ваших типах приложений на TypeScript.