【发布时间】:2018-04-11 01:11:56
【问题描述】:
如何编写一个类型安全的类装饰器来正确处理静态方法?
具体来说,这个装饰器适用于没有静态方法的类:
interface ITypeOf<T> {
new(...args: any[]): T
}
function decorate<T>(cls: ITypeOf<T>): ITypeOf<T> {
return cls
}
但是ITypeOf 不考虑静态属性,所以当它应用于具有静态属性的类时编译失败并出现此错误:
@decorate
class Foo {
static bar() {
return 42
}
}
产生错误:
Unable to resolve signature of class decorator when called as an expression.
Type 'ITypeOf<Foo>' is not assignable to type 'typeof Foo'.
Property 'bar' is missing in type 'ITypeOf<Foo>'.
function decorate<T>(cls: ITypeOf<T>): ITypeOf<T>
这是一个工作示例: http://www.typescriptlang.org/play/#src=interface…
如何编写适用于具有静态成员的类的类型安全的类装饰器?
【问题讨论】:
标签: typescript