TypeScript 中的 getter/setter 是什么?你如何使用它们?
参考答案:
在 TypeScript(以及 JavaScript)中,getter 和 setter 是一种特殊类型的方法,允许你控制对一个对象的属性的访问。它们分别用于获取(get)和设置(set)属性的值。
使用 getter 和 setter 可以让你在读取或写入属性值时执行一些额外的逻辑,例如验证数据、计算值、触发事件等。
如何使用 getter 和 setter:
- 定义 getter 和 setter
你可以在类的定义中通过 get
和 set
关键字来定义 getter 和 setter。
class Person {
private _name: string;
get name(): string {
return this._name;
}
set name(value: string) {
if (typeof value !== 'string' || value.trim() === '') {
throw new Error('Name must be a non-empty string');
}
this._name = value;
}
}
在这个例子中,name
属性有一个 getter 和一个 setter。当你读取 person.name
时,会调用 getter 方法并返回 _name
的值。当你写入 person.name = 'John'
时,会调用 setter 方法,并在设置新值之前进行一些验证。
2. 使用 getter 和 setter
一旦你定义了 getter 和 setter,就可以像使用常规属性一样使用它们。
const person = new Person();
person.name = 'John'; // 调用 setter
console.log(person.name); // 调用 getter,输出 'John'
-
注意
- getter 和 setter 允许你对属性的访问进行更细粒度的控制。然而,过度使用它们可能会使代码难以阅读和维护,因此建议只在确实需要时使用它们。
- 在 TypeScript 中,由于类型检查的存在,你可以在 setter 中进行类型验证,确保传入的值符合你的期望。
- 如果你想在 setter 中执行异步操作(例如,更新数据库),你可能需要返回一个 Promise 或使用其他异步处理机制。
总之,getter 和 setter 是 TypeScript(和 JavaScript)中一种强大的工具,允许你更灵活地控制对对象属性的访问。