Typescript超类从装饰器识别

问题描述 投票:0回答:2

我有一个类似下面的抽象类

export abstract class Foo {
  public f1() {
  }
}

和另外两个扩展基础的类

export class Boo extends Foo {
}

export class Moo extends Foo {
}

现在我有一个类似以下的自定义装饰器

export function Bla() {
  return (target: any, key: string, descriptor: PropertyDescriptor) => {
  }
}

所以我的第一堂课是以下的(带有装饰器)

export abstract class Foo {
 @Bla
 public f1() {
 }
}

装饰器中是否有办法区分来​​自每个超类的哪个调用?

到目前为止,我一直在尝试检查target的原型/构造函数,但我似乎还没有找到访问/了解它源自哪个类的方法。有没有办法解决还是我做错了什么?

谢谢。

typescript superclass typescript-decorator
2个回答
0
投票
因为正在装饰原型方法,所以在评估class构造器时,将应用装饰器,而不是在创建实例时再应用。它仅适用于该类的原型成员(子类仅通过继承获取修饰的成员)。

假设您有:


0
投票
诀窍是利用方法调用本身:
© www.soinside.com 2019 - 2024. All rights reserved.