[英]Typescript generic of generic type inference
我有一个泛型类Generic<T>
和另一个泛型类,其中另一个泛型类是GenericWrap<U extends Generic<any>
的泛型类型。 它具有Generic<any>
作为成员。 (请参见下面的代码)
现在, NumberGenericWrap
用通用类型<NumberGeneric>
扩展了GenericWrap
。 在这一点上,我希望NumerGenericWrap.generic
的类型为Generic<number>
因此NumberGenericWrap.getValue()
的返回类型可以为number
。 但是它以any
类型结束。
打字稿支持吗?
class Generic<T> {
val: T;
}
class NumberGeneric extends Generic<number> {
}
class GenericWrap<U extends Generic<any>> {
generic: U;
getValue() {
return this.generic.val;
}
}
class NumberGenericWrap extends GenericWrap<NumberGeneric> {
}
let n = new NumberGenericWrap();
// expected 'typeof val' => number
// actual 'typeof val' => any
let val = n.getValue();
我不知道为什么类型检查器不尝试推断val类型,但是它有解决方法。 只需告诉类型检查器对该通用类型进行查找并找到val类型即可。
type ValType<T extends Generic<any>> = T["val"];
class GenericWrap<U extends Generic<any>> {
generic: U;
getValue(): ValType<U> {
return this.generic.val;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.