在TypeScript中模拟通配符类型参数(具有不同的标识)

时间:2018-07-11 10:06:46

标签: typescript

说我有一个简单的类型,例如:

interface X<A, B> {
    getA(): A;
    acceptB(b: B);
}

和一个采用任何类型的X的函数:

function fun<V extends X<any, any>> (v: V) {
    v.acceptB(v.getA());
}

以上已编译,因为已使用类型参数X实例化了泛型类型any, any,但这不是类型安全的,因为A的实际类型可能不是子类型B的类型。

在Java之类的语言中,存在通配符类型具有不同的标识,以便人们可以执行X<?, ?>,并且由于?-1不是?-2的子类型,以上内容将无法编译。

在TypeScript中,可以执行以下操作:function fun<A, B, V extends X<A, B>> (v: V) {,但是您可以看到,如果使用带有许多类型参数的中央泛型类型,则可以很快解决这一问题。

因此,有没有更好的方法来模拟通配符行为?

0 个答案:

没有答案