繁体   English   中英

泛型类型推断的Typescript泛型

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

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