是否可以将属性getter / setter创建为函数?
标准的getter / setter工作如下:
class Test {
something: any;
get prop() {
return something;
}
set prop(value) {
something = value;
}
}
let instance = new Test();
instance.prop = 'Foo';
console.log(instance.prop); // = Foo
我需要关注:
let instance = new Test();
instance.prop('Bar') = 'Foo'; // access setter as a function of prop
console.log(instance.prop('Bar')); // = Foo
是的,我知道这是非正统的用法,是的,我知道我可以用不同的方式实现这个功能。如果可以在JS / TS / ES6中使用,我感兴趣。
更新
这是我最接近的:
class Test {
something: any;
prop(area /* my custom symbol type */) {
const obj: any = {};
Object.defineProperty(obj, 'value', {
// get child object of my complex object
get: () => this.something[area];
// replace part of my complex object
set: (value) => {
this.something = {...this.something, [area]: value}
}
});
}
}
let instance = new Test();
instance.prop('Bar').value = 'Foo';
console.log(instance.prop('Bar').value); // = Foo
简而言之,如果可能的话,我想摆脱value
后缀。
答案 0 :(得分:0)
正如@deceze在第一条评论中提到的那样,无法分配给函数调用,因此更新中的解决方案是最佳的。