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