📜  TypeScript 访问器(1)

📅  最后修改于: 2023-12-03 15:20:43.525000             🧑  作者: Mango

TypeScript 访问器

在 TypeScript 中,访问器是一种特殊的方法,用于控制类中属性的访问。可以使用访问器来监视和修改私有变量的值,以确保更好的封装性和安全性。

getter 和 setter

访问器由 getter 和 setter 组成。一个 getter 方法用来获取私有变量的值,一个 setter 方法用来设置私有变量的值。这两个方法的名称必须相同,但两者必须同时存在。

以下是一个使用 getter 和 setter 的简单示例:

class Person {
  private _name: string;

  get name(): string {
    return this._name;
  }

  set name(newName: string) {
    this._name = newName;
  }
}

const person = new Person();
person.name = "Alice";
console.log(person.name); // "Alice"

在这个例子中,Person 类中有一个私有属性 _name,它被公开为使用 getter 和 setter 访问的 name 属性。当给 name 属性赋值时,调用 setter 方法将 _name 设置为新值。获取 name 属性时,调用 getter 方法返回 _name 的值。

只读访问器

getter 方法也可以是只读的,此时不能给属性赋值。以下示例展示了如何实现只读访问器:

class Person {
  private _age: number;

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

const person = new Person();
person.age = 30; // 编译错误,只读属性无法赋值

在这个例子中,Person 类有一个私有属性 _age,它只能被 getter 方法读取。

protected 访问器

访问器也可以使用 protected 访问修饰符。以下是一个示例:

class Person {
  private _name: string;

  protected get name(): string {
    return this._name;
  }
}

class Employee extends Person {
  get name(): string { //编译错误,无法访问受保护的属性
    return this._name;
  }
}

在这个例子中,Person 类中的 name getter 使用 protected 修饰符进行保护。Employee 类继承自 Person,但它无法访问 name 属性。

总结

访问器是 TypeScript 中一个非常强大的特性,可以用来控制类中属性的访问。getter 和 setter 方法分别用于获取和设置私有变量的值。getter 方法还可以是只读的。访问器也可以使用 protected 访问修饰符。