📅  最后修改于: 2023-12-03 15:20:43.525000             🧑  作者: Mango
在 TypeScript 中,访问器是一种特殊的方法,用于控制类中属性的访问。可以使用访问器来监视和修改私有变量的值,以确保更好的封装性和安全性。
访问器由 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
访问修饰符。以下是一个示例:
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
访问修饰符。