【发布时间】:2016-12-25 20:35:50
【问题描述】:
我有一个类装饰器家族,我在许多类中重复使用它们。类似的东西:
@foo
@bar
@baz
export class MyClass { /* ..... */ }
由于我在多个类中使用这三个装饰器,我真的很想将其分解为一个装饰器,如下所示:
@standard
export class MyClass { /* ... */ }
我尝试创建一个新的类装饰器,它像这样链接装饰器调用:
export function standard<ReturnType>(ctor: Constructor<ReturnType>) {
return baz(bar(foo(ctor)));
}
TypeScript 手册说应用多个装饰器的评估应该类似于函数组合,这就是为什么我认为我应该能够将它们链接在一起。但是,在编译时(使用 TypeScript 1.8)我收到类似于
的错误Unable to resolve signature of class decorator when called as an expression. Type 'Constructor<ReturnType>' is not assignable to type 'void'.
有没有办法可以构造这个“包装器”装饰器来简化我的代码?
【问题讨论】:
-
当我填写空白时,您的代码对我来说很好。您可以发布一个重复您的错误的完整示例吗?
-
试图给你一个更好的例子引导我解决问题!在下面查看我的答案。
标签: typescript decorator