不使用 @ 语法装饰 ES6 class 方法?
Decorate ES6 class method without using @ syntax?
通常你使用语法修饰一个函数:
@decorate
function x() {
console.log('wow am I decorated')
}
但是流尚不支持此语法。一个简单的解决方法是你可以做
const x = decorate(function() {
console.log('wow am I decorated')
})
但是我怎样才能在 class 中获得相同的结果?
class plsWork {
how2decorate() {
console.log('why can I not be decorated :sob:')
}
}
这取决于。由于您不遵守当前标准,您可以使用 class 属性:
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:')
});
}
}
没有必要做任何花哨的事情。通过 .flowconfig
选项 esproposal.decorators=ignore
支持方法装饰器。
对 class 装饰器的支持刚刚 pulled in today,应该会在下一个版本中实现。
通常你使用语法修饰一个函数:
@decorate
function x() {
console.log('wow am I decorated')
}
但是流尚不支持此语法。一个简单的解决方法是你可以做
const x = decorate(function() {
console.log('wow am I decorated')
})
但是我怎样才能在 class 中获得相同的结果?
class plsWork {
how2decorate() {
console.log('why can I not be decorated :sob:')
}
}
这取决于。由于您不遵守当前标准,您可以使用 class 属性:
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:')
});
}
}
没有必要做任何花哨的事情。通过 .flowconfig
选项 esproposal.decorators=ignore
支持方法装饰器。
对 class 装饰器的支持刚刚 pulled in today,应该会在下一个版本中实现。