是否可以使用私有方法实现装饰器? E.g。
{{1}}
我的初步调查似乎表明这是不可能的,但我似乎无法在此找到可靠的参考。
答案 0 :(得分:2)
是的,您可以将私有方法声明为静态:
class AAA
{
private static Dec(target: any, key: string)
{
console.log("Decorator applied");
}
@AAA.Dec
public Prop: number;
}
使用实例方法将无法实现,因为要引用私有实例方法,您需要访问此时未定义的“this”。通过查看生成的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;
})();
这里'this'将在通话时未定义。
希望这有帮助。