Javascript 有没有办法在typescript类中生成getter和setter对?

Javascript 有没有办法在typescript类中生成getter和setter对?,javascript,typescript,webpack,Javascript,Typescript,Webpack,我有许多代码块,它们非常相似,如下所示: // BLOCK 1 get computed1() { return this.dataComputed1; } set computed1(value: any) { update(value); } // BLOCK 2 get computed2() { return this.dataComputed2; } set computed2(value: any) { update(value); } ... 现在,看第1块和

我有许多代码块,它们非常相似,如下所示:

// BLOCK 1
get computed1() {
  return this.dataComputed1;
}
set computed1(value: any) {
  update(value);
}

// BLOCK 2
get computed2() {
  return this.dataComputed2;
}
set computed2(value: any) {
  update(value);
}

...
现在,看第1块和第2块在上下文中是非常相似的,如果我们把它看作一个文本的话。我想知道是否有一种方法可以通过引入某种类似于scss mixin的代码生成器来转换此代码:

// BLOCK 1
makeComputed('computed1');

// BLOCK 2
makeComputed('computed2');

...

没有任何简单的快捷方式解决您的问题,您需要通过if/else或switch语句处理每个请求

function makeComputer(op) {
  switch (op) {
    case 'computed1':
      // logic
      break;
    case 'computer2':
      // logic
      break;
    default:
      // logic
  }
}
我从微软动力公司(MicrosoftDynamics)那里学到了一个很好的模式,叫做“parm”。这将getter setter与上述方法结合在一起,您将能够在单个函数中处理get/set和操作查找

function parmX(x) {
  if (x) this.x = x;
  else return this.x;
}

下面是使用

福班{ } 函数makeComputedprop{ 常量字段=`data${prop}`; Object.definePropertyFoo.prototype,道具{ get:函数{ log`get${field}`; 返回此[字段]; }, set:函数值{ log`updateing${field}`; 此[字段]=值; }, 可枚举:正确, 可配置:true }; } makeComputed'computed1'; makeComputed'computed2'; const foo=新foo; foo.computed1=123;
console.logfoo.computed1;你能用更现实的例子来更新这个问题吗?get computed1{return this.computed1;}将抛出一个错误永不结束的递归。作为补充说明,您可以生成getter和setter,但不会为此进行类型检查。如果您想让我添加一个示例,请告诉我。@AlekseyL。哈哈,我不知道,谢谢你。是的,我很感激。谢谢,很高兴知道。看到我使用的Vue.js框架允许使用纯js,我选择了这条路径。