繁体   English   中英

如何使用泛型使用Java类文字的TypeScript模拟?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM