打字稿:抽象方法中的装饰器

时间:2019-06-17 12:29:46

标签: typescript

我有以下课程:

export abstract class CanDeactivateComponent {
  abstract canLeavePage(): boolean;
  abstract onPageLeave(): void;

  @someDecorator
  abstract canDeactivateBeforeUnload(): boolean;

}

,我得到错误A decorator can only decorate a method implementation, not an overload。我知道我不能在这种情况下放置装饰器,但是可以应用哪种解决方法,以便我强制此类的所有实现在@someDecorator之前使用canDeactivateBeforeUnload?没有任何方法可以将此装饰器放在抽象类本身中,这样我就不必在所有实现中都编写它了?

谢谢!

1 个答案:

答案 0 :(得分:3)

我想这取决于上下文,但是也许使用一种代理可以为您服务的方法?

export abstract class CanDeactivateComponent {
    abstract canLeavePage(): boolean;
    abstract onPageLeave(): void;

    abstract canDeactivateBeforeUnload(): boolean;

    @someDecorator
    _canDeactivateBeforeUnload(): boolean {
        return this.canDeactivateBeforeUnload()
    }
}