TypeScript访问器
在TypeScript中,访问器属性提供了一种访问和设置类成员的方法。它有以下两种方法。
- getter
 - setter
 
getter
getter访问器属性是检索变量值的传统方法。在对象字面量中,使用“get”关键字表示getter属性。它可以是公共的、私有的和受保护的。
语法
get propName() {
    //获取程序,在获取obj.propName时执行的代码
},
示例
class MyDrawing {  
    length: number = 20;  
    breadth: string = 15;  
    get rectangle() {  
        return this.length * this.breadth;  
    }  
}  
console.log(new MyDrawing().square);
Setter
setter访问器属性是用于更新变量值的传统方法。在对象文字中,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 = "Abhishek Mishra"
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("Unauthorized update of student detail!");
        }
    }
}
let stud = new Student();
stud.fullName = "Virat Kohli";
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() { }
极客教程