Typescript 推断类型脚本泛型类类型

Typescript 推断类型脚本泛型类类型,typescript,generics,conditional,type-inference,Typescript,Generics,Conditional,Type Inference,B扩展了一个泛型类a。我需要能够推断出B的扩展a的泛型类型。参见下面的代码 我在以前的Typescript版本中成功地使用了它,但是对于我当前使用3.2.4的项目,我也尝试了最新的3.4.5,推断出的类型似乎是{},而不是字符串 知道我做错了什么吗?这不可能改变吗 甲级{ } B类扩展了A类{ } 类型GenericOf=T扩展了?X:从来没有; 类型t=GenericOf;//结果为{},应为字符串 好吧,nvm在做了大量的研究后自己找到了答案。在这个简单的例子中,TypeScript似乎无法

B扩展了一个泛型类a。我需要能够推断出B的扩展a的泛型类型。参见下面的代码

我在以前的Typescript版本中成功地使用了它,但是对于我当前使用3.2.4的项目,我也尝试了最新的3.4.5,推断出的类型似乎是{},而不是字符串

知道我做错了什么吗?这不可能改变吗

甲级{ } B类扩展了A类{ } 类型GenericOf=T扩展了?X:从来没有; 类型t=GenericOf;//结果为{},应为字符串
好吧,nvm在做了大量的研究后自己找到了答案。在这个简单的例子中,TypeScript似乎无法区分,因为这些类都是空的,并且等价于{}。添加属性实际上是不够的,它需要是实际引用泛型t的属性,以便TypeScript稍后正确推断泛型类型:

甲级{ 构造函数公共a:T{} } B类扩展了A类{ 构造器公共b:C{ 棒 极 了 } } C类{ 构造函数公共:字符串{ } } 类型GenericOf=T扩展了?X:从来没有; t型=通用型;
目前,类中没有使用泛型的类实际上具有与{}相同的结构,因此推断。破坏您功能的更改是一个bug修复,解决方法是在类中的某个地方使用a的泛型,推理将再次起作用

希望这有帮助

class A<T> {
    hello: T = "" as any; // note that i have used the generic somewhere in the class body.
}
class B extends A<string> {}
type GenericOf<T> = T extends A<infer X> ? X : never;
type t = GenericOf<B>; // string.