📜  TypeScript 访问器

📅  最后修改于: 2022-05-13 01:56:21.141000             🧑  作者: Mango

TypeScript 访问器

在 TypeScript 中,有两种受支持的方法 getter 和 setter 来访问和设置类成员。更好的方法控制如何在每个对象上访问成员。
typescript 访问器属性的方法:

  • getter:当您想要访问对象的任何属性时,就会出现此方法。
  • setter:当你想改变一个对象的任何属性时,这个方法就会出现。

getter:用于提取变量的值getter 是访问器属性的常规方法。它由对象字面量量中的get关键字表示。
句法:

get accessName() {  
    // getter, the code executed on getting obj.accessName  
  },  

例子:

javascript
class MyClass {
    private _with:number = 5;
    private _height:number = 10;
    get square() {
        return this._with * this._height;
    }
}
console.log(new MyClass().square);


javascript
set fullname {
    const parts = value.split ('');
    this.partname = firstname[0];
    this.partname = firstname[1];
}
person fullname = "Hitangshu Agarwal"
console.log(person);


javascript
const company = {
    companyName = "GeeksforGeeks",
    companyTag = "Edutech",
     
    // Function that return the Full description
    // combined both comapnyName and companyTag
    get full_Desc () {
        return `${company.companyName} ${company.CompanyTag}`
    },
     
     
    // It will return separately companyName and companyTag
    set full_Desc(value) {
        const parts = value.split ('');
        this.partname = companyName[0];
        this.partname = CompanyTag[1];
    }
};
 
company.full_Desc = "GeeksforGeeks Edutech";
console.log(company);


输出:

50

getter 可以是公共的、受保护的、私有的。使某些东西表现得像属性或函数只是人为的。所以,得到 square() 和 new MyClass().square 与 square() 和 new MyClass().square() 是一样的。
Setter:为了更新变量的值, setter 访问器属性是使用的常规方法。它们由对象字面量中的set关键字表示。
句法:

set accessName(value) {  
    // the code executed on setting 
    //obj.accessName = value, from setter  
  }  

例子:

javascript

set fullname {
    const parts = value.split ('');
    this.partname = firstname[0];
    this.partname = firstname[1];
}
person fullname = "Hitangshu Agarwal"
console.log(person);

输出:

firstname: "Hitangshu"
lastname: "Agarwal"

下面的例子清楚地说明了 getter 和 setter 的概念:
例子:

javascript

const company = {
    companyName = "GeeksforGeeks",
    companyTag = "Edutech",
     
    // Function that return the Full description
    // combined both comapnyName and companyTag
    get full_Desc () {
        return `${company.companyName} ${company.CompanyTag}`
    },
     
     
    // It will return separately companyName and companyTag
    set full_Desc(value) {
        const parts = value.split ('');
        this.partname = companyName[0];
        this.partname = CompanyTag[1];
    }
};
 
company.full_Desc = "GeeksforGeeks Edutech";
console.log(company);

输出:

GeeksforGeeks Edutech

要记住的要点:

  • gettersetter的帮助下,我们实现了对每个对象如何访问成员的适当控制。
  • TypeScript 访问器需要将编译器设置为输出 ECMAScript 5 或更高版本,我们应该需要 typescript 访问器。它不支持低于 ECMAScript 5。
  • 具有 get 且没有 set 属性的访问器被自动假定为只读,无需手动操作。这在我们从代码生成.d.ts文件时很有帮助。