不使用@语法来装饰ES6类方法?

时间:2016-04-12 05:49:48

标签: javascript ecmascript-6 flowtype

通常使用语法修饰函数:

@decorate
function x() {
  console.log('wow am I decorated')
}

但是,流程尚不支持此语法。一个简单的解决方法是你可以做到

const x = decorate(function() {
  console.log('wow am I decorated')
})

但是如何才能在课堂内取得同样的成绩?

class plsWork {
  how2decorate() {
    console.log('why can I not be decorated :sob:')
  }
}

2 个答案:

答案 0 :(得分:4)

没有必要做任何花哨的事情。通过Accounts.onCreateUser(function(user){ if (user.gender === 'm') user.avatar = "generic-male.png"; else user.avatar = "generic-female.png"; return user; }); 选项.flowconfig支持方法装饰器。

对类装饰器的支持刚刚pulled in today,应该进入下一个版本。

答案 1 :(得分:3)

这取决于。由于您不遵守当前标准,因此可以使用类属性:

class plsWork {
  how2decorate = decorate(function() {
    console.log('why can I not be decorated :sob:')
  })
}

另一种方法是在构造函数中添加方法,这是转换器对第一个解决方案的处理方式:

class plsWork {
  constructor() {
    this.how2decorate = decorate(() => {
      console.log('why can I not be decorated :sob:')
    });
  }
}