Javascript 如何在TypeScript中使用泛型模拟Java类文字?
我需要用TypeScript中的泛型模拟Java类文字 这是我的班级:Javascript 如何在TypeScript中使用泛型模拟Java类文字?,javascript,java,typescript,Javascript,Java,Typescript,我需要用TypeScript中的泛型模拟Java类文字 这是我的班级: class Class<T> { public getName(): string { return ...; } } 类{ public getName():字符串{ 返回。。。; } } 这是我创建类文本的尝试 declare global { interface Object { class<T extends object>(t
class Class<T> {
public getName(): string {
return ...;
}
}
类{
public getName():字符串{
返回。。。;
}
}
这是我创建类文本的尝试
declare global {
interface Object {
class<T extends object>(this: T): Class<T>;//LINE X
}
}
声明全局{
接口对象{
class(this:T):class;//第X行
}
}
例如,对于类
Foo
,我希望通过以下方式获得文本:Foo.class()
。但是,在X行我有一些错误,因为它返回Class
而不是Class
。如何修复它?因为这意味着要在类上调用,所以需要对T
进行限制,以确保该方法只在类上显示。这可以使用构造函数签名(new(…a:any[])=>any
)来完成
由于T
是类类型,并且您需要实例类型,因此可以使用预定义的条件类型InstanceType
从类类型中获取实例类型:
declare global {
interface Object {
class<T extends new (...a: any[])=> any>(this:T): Class<InstanceType<T>>;
}
}
声明全局{
接口对象{
class any>(此:T):class;
}
}
你能看看这个问题吗?