这是超出了TypeScript能够做的能力还是我做了一些非常错误的事情?下面是一些代码,我会想有工作:打字稿子类型推断
interface ISquare {
area: number;
}
interface ICircle {
radius: number;
}
abstract class Morph<T1, T2> {
firstOption: T1;
secondOption: T2;
}
class CircleAndSquare extends Morph<ICircle, ISquare> { }
function returnSecondOption<TMorph extends Morph<T1, T2>, T1, T2> (morph: TMorph): T2 {
return morph.secondOption;
}
returnSecondOption(new CircleAndSquare()) // adding a . here should give me intellisense for a square
智能感知应显示ISquare
当我把一个点在函数调用returnSecondOption
结束的成员,但它没有,它似乎将T1和T2视为{}
。
'function returnSecondOption(morph:Morph ):T2' is correct。我没有看到任何更复杂的事情是由OP中的情况所保证的。 –