TypeScript中的自定义装饰器

如何访问装饰器所在的类的变量?

@TestDecorator()
export class AppController {
    private testData: number  = 15;
}

export const TestDecorator = (options: ICrudConfig) => (target: Object) => {
  console.log(target.prototype.testData);
};

target.prototype.testData未定义

提前谢谢

guodongjie05 回答:TypeScript中的自定义装饰器

Typescript's class decorator doc进行说明。您的类装饰器允许您扩展和修改构造函数,而您不能直接访问和修改类的原型。

尝试使用控制台记录目标,以查看您可以访问的内容;)

我的建议:尝试返回一个扩展目标的类。

请记住,类装饰器是在实例化类之前进行评估的,因此您将能够覆盖方法和常量,但将无法访问稍后在执行过程中实例化的变量。

export const TestDecorator = (options: ICrudConfig) => (target: Object) => {
  return class extends target { // returns a new class extending the decorated one;
    constructor {
      super();
      console.log(this.testData);
    }
  };
};
本文链接:https://www.f2er.com/2549083.html

大家都在问