【发布时间】:2018-08-29 16:14:25
【问题描述】:
我有课:
class X<T extends B> [...]
// this.p.a :: B | null
methodA(a: T):void {[...]}
methodB(): void {
if(this.p.a){ // :: B
this.methodA(this.p.a) // Error
如您所见,我将T 转为任何类型,只要它扩展B,然后我将一些属性传递给它所述类型B。但是 Typescript 无法推断出B 是满足上述代码 sn-p 的最后一行 T 类型参数的类型。
错误信息:
error TS2345: Argument of type 'B' is not assignable to parameter of type 'T'.
为什么这不起作用?
我是否应该将任何有问题的类型声明更改为 B 而不是 T 并继续继承?
【问题讨论】:
-
if 在 X 类里面?
-
哦,是的。它在
methodB里面X类里面
标签: typescript generics parametric-polymorphism subtyping