个性化阅读
专注于IT技术分析

TypeScript属性访问器 – TypeScript开发教程

上一章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() { }  
赞(0)
未经允许不得转载:srcmini » TypeScript属性访问器 – TypeScript开发教程

评论 抢沙发

评论前必须登录!