[英]How to make in TypeScript analogue of Java getClass() with generics?
[英]How to make in TypeScript analogue of Java class literal with generics?
我需要在TypeScript中使用泛型来模拟Java类文字。
这是我的Class类:
class Class<T> {
public getName(): string {
return ...;
}
}
这是我尝试创建类文字。
declare global {
interface Object {
class<T extends object>(this: T): Class<T>;//LINE X
}
}
例如,对于Foo
类,我想以这种方式获取文字: Foo.class()
。 但是,在LINE XI有一些错误,因为它返回Class<typeof Foo>
而不是Class<Foo>
。 怎么解决?
由于这是为了在类上调用,因此需要对T
进行限制以确保该方法仅显示在类上。 这可以使用构造函数签名( new (...a: any[])=> any
)来完成
由于T
是类类型,并且您需要实例类型,因此可以使用预定义的条件类型InstanceType
从类类型中获取实例类型:
declare global {
interface Object {
class<T extends new (...a: any[])=> any>(this:T): Class<InstanceType<T>>;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.