从方法装饰器获取方法的签名

时间:2017-04-27 22:25:31

标签: typescript typescript2.0 typescript-decorator

我有一个像这样的方法装饰器:

export function NumberMethodDecorator(message: string) {
  return (target: object, propertyKey: string, descriptor?: TypedPropertyDescriptor<any>) => {
    // do some stuff here
  }
}

我想像这样应用它:

class SomeClass {

  @NumberMethodDecorator("do some cool stuff")
  public someMethod(value: number) {

  }

}

但是,我想确保NumberMethodDecorator仅适用于签名为(value: number) => any的方法。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

TypedPropertyDescriptor参数中指定:

export function NumberMethodDecorator(message: string) {
  return (
    target: object, propertyKey: string,
    descriptor?: TypedPropertyDescriptor<(value: number) => any>
  ) => {
    // do some stuff here
  };
}

然后使用时:

class SomeClass {
  @NumberMethodDecorator("") // ok
  someMethod(value: number) {

  }

  @NumberMethodDecorator("") // compile error
  otherMethod() {
  }
}