0
是否可以使用私有方法实现装饰器?例如。使用私有实例方法实现TS/JS装饰器?
class Person {
@validateSomethingFirst
public doSomething() {
}
private validateSomethingFirst() { ... }
}
我的初步调查似乎表明,这是不可能的,但我似乎无法找到一个坚实的参考。
是否可以使用私有方法实现装饰器?例如。使用私有实例方法实现TS/JS装饰器?
class Person {
@validateSomethingFirst
public doSomething() {
}
private validateSomethingFirst() { ... }
}
我的初步调查似乎表明,这是不可能的,但我似乎无法找到一个坚实的参考。
是的,它是可能的,如果你要将你的私有方法为静态:
class AAA
{
private static Dec(target: any, key: string)
{
console.log("Decorator applied");
}
@AAA.Dec
public Prop: number;
}
用实例方法将是不可能的,因为指私有的实例方法,你将需要访问“这个”,这将是在那个时候未定义。通过查看生成的js代码很容易找到原因。如果我们的样本中更改为实例方法上面 - JS代码将是:
var AAA = (function() {
function AAA() {
}
AAA.Dec = function (target, key) {
console.log("Decorator applied");
};
__decorate([
this.Dec,
__metadata('design:type', Number)
], AAA.prototype, "Prop", void 0);
return AAA;
})();
这里“这”将在电话的那一刻是不确定的。
希望这会有所帮助。
[当然可以](http://stackoverflow.com/q/16919473/1048572),为什么不呢? – Bergi
我在问private _decorators_,而不是_functions_。谢谢! –