跳到主要内容

TypeScript 中的 getter/setter 是什么?你如何使用它们?

参考答案:

在 TypeScript(以及 JavaScript)中,getter 和 setter 是一种特殊类型的方法,允许你控制对一个对象的属性的访问。它们分别用于获取(get)和设置(set)属性的值。

使用 getter 和 setter 可以让你在读取或写入属性值时执行一些额外的逻辑,例如验证数据、计算值、触发事件等。

如何使用 getter 和 setter:

  1. 定义 getter 和 setter

你可以在类的定义中通过 getset 关键字来定义 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'
  1. 注意

    • getter 和 setter 允许你对属性的访问进行更细粒度的控制。然而,过度使用它们可能会使代码难以阅读和维护,因此建议只在确实需要时使用它们。
    • 在 TypeScript 中,由于类型检查的存在,你可以在 setter 中进行类型验证,确保传入的值符合你的期望。
    • 如果你想在 setter 中执行异步操作(例如,更新数据库),你可能需要返回一个 Promise 或使用其他异步处理机制。

总之,getter 和 setter 是 TypeScript(和 JavaScript)中一种强大的工具,允许你更灵活地控制对对象属性的访问。