上一章TypeScript教程请查看:TypeScript三个访问修饰符
在TypeScript中,属性访问器提供了访问和设置类成员的方法。它有两个方法,如下所示。
- getter
- setter
getter
getter访问器属性是用于检索变量值的常规方法。在object字面量中,用“get”关键字表示的getter属性。它可以是公共的、私有的和受保护的。
语法
get propName() {
// getter, 获取obj.propName时执行的代码
},
例子
class MyDrawing {
length: number = 20;
breadth: string = 15;
get rectangle() {
return this.length * this.breadth;
}
}
console.log(new MyDrawing().square);
Setter
setter访问器属性是用于更新变量值的常规方法。在object字面量中,setter属性由“set”关键字表示。
语法
set propName(value) {
// setter, 在设置obj.propName = value 时执行的代码
}
例子
set displayFullName {
const parts = value.split ('');
this.pname = firstname[0];
this.pname = firstname[1];
}
person displayFullName = "La Oreja"
console.log(student);
注意:
- getter和setter使我们能够更好地控制如何访问每个对象上的成员。
- TypeScript访问器要求我们将编译器设置为输出ECMAScript 5或更高。它不支持ECMAScript 5。
- 具有get属性而没有任何set属性的访问器自动被认为是只读的。它在从我们的代码生成.d.ts文件时很有用。
我们可以从下面的例子中理解getter和setter的概念。
例子
let passcode = "secret passcode";
class Student {
private _fullName: string;
get fullName(): string {
return this._fullName;
}
set fullName(newName: string) {
if (passcode && passcode == "secret passcode") {
this._fullName = newName;
}
else {
console.log("未经授权更新学生详细资料!");
}
}
}
let stud = new Student();
stud.fullName = "La Oreja";
if (stud.fullName) {
console.log(stud.fullName);
}
现在,如果我们改变第一行:let passcode = “secret_passcode”;
然后,输出:未经授权更新学生详细资料!
getter和setter的命名约定
setter和getter方法的命名约定如下:
getXX()和setXX ()
这里,XX是变量的名称。例如:
private String name;
然后setter和getter是:
public void setName(String name) { }
public String getName() { }
评论前必须登录!
注册