📜  如何在 TypeScript 中使用 gettersetter?(1)

📅  最后修改于: 2023-12-03 14:52:35.496000             🧑  作者: Mango

在 TypeScript 中,您可以使用 getters 和 setters 来定义属性的访问和修改行为。Getters 和 setters 提供了一种封装属性访问的方式,通过在属性上添加逻辑可以更好地控制属性的读取和写入。

使用 Getters

Getters 允许您在属性被访问时执行逻辑,并返回计算出的值。下面是在 TypeScript 中使用 getters 的示例:

class Person {
  private _firstName: string;
  private _lastName: string;

  constructor(firstName: string, lastName: string) {
    this._firstName = firstName;
    this._lastName = lastName;
  }

  get fullName(): string {
    return `${this._firstName} ${this._lastName}`;
  }
}

const person = new Person("John", "Doe");
console.log(person.fullName); // 输出: "John Doe"

在上面的示例中,我们定义了一个 Person 类,并使用 fullName getter 来获取完整的名字。在 fullName 的 getter 中,我们使用了模板字面量来组合 _firstName_lastName,并返回拼接后的字符串。

请注意,私有属性 _firstName_lastName 是实际存储数据的地方,而 fullName getter 提供了对这些属性的封装。这样可以确保逻辑一致性并提供更好的代码组织。

使用 Setters

Setters 允许您在属性被赋值时执行逻辑,并对新值进行处理。下面是在 TypeScript 中使用 setters 的示例:

class Person {
  private _age: number;

  get age(): number {
    return this._age;
  }

  set age(newAge: number) {
    if (newAge >= 0 && newAge <= 120) {
      this._age = newAge;
    } else {
      throw new Error("Invalid age!");
    }
  }
}

const person = new Person();
person.age = 25; // 调用 setter
console.log(person.age); // 输出: 25

person.age = 150; // 调用 setter,并抛出异常

在上面的示例中,我们定义了一个 Person 类,并使用 age setter 来设置年龄。在 age 的 setter 中,我们检查新的年龄是否在有效范围内(0 到 120),如果是,则允许赋值,否则抛出异常。

setter 和 getter 并不是必须成对存在的。您可以只使用 getter 或只使用 setter,具体取决于您的需求。

总结

通过使用 getters 和 setters,您可以更好地封装属性访问,并在访问或修改属性时执行自定义逻辑。这样可以提高代码的可读性、可维护性和灵活性。

希望这个介绍能帮助您在 TypeScript 中正确使用 getters 和 setters!