【发布时间】:2018-01-25 03:15:13
【问题描述】:
假设我有一个具有内部私有属性的类:
export class foo {
private bar_:string;
private baz_:number;
constructor() { }
我知道我可以通过为变量编写一个 getter 从 bar 和 baz 获取值。
get bar():string {
return this.bar_;
}
get baz():number {
return this.baz_;
}
这允许我使用以下方式访问数据:
let A:foo = new foo();
console.log(foo.baz);
有没有办法拥有一个简单的通用 getter,所以在使用更结构化的类时,我可以访问任何字段而无需编写单独的 get。
console.log(A.field2);
field2 不是已定义的 getter,但我希望能够在类中执行以下操作:
export class foo {
private bar_:string;
private baz_:number;
private field2_:string;
constructor() { }
get X():any { // X here is some placeholder that could be used, which contains the field name being asked (bar_, baz_, etc.)
return this.X; // This would assume that a field is the same name as what was passed.
}
在 HTML 或其他区域,我可以将值作为 A.bar_ 访问,这将允许我保护私有变量,但无需为每个字段编写 getter 即可获得对其的外部访问。这也可以扩展到更复杂的结构。
【问题讨论】:
标签: typescript generics getter