使用嵌套泛型扩展泛型 class

Extending a generics class with nested generics

打字稿中有没有办法以这种方式扩展 class:

class ChildClass<Wrapper<A>> extends SuperClass<A>

这行不通,但想法是将泛型类型包装到已知结构中。这是文档:

https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md

这听起来与这个问题有点相似:

我不太会做 oop,所以我对协变和逆变之类的东西不是很熟悉,如有任何帮助,我们将不胜感激。

在 extends 之前写 ChildClass<Wrapper<A>> 是没有意义的,因为你在那里 声明 泛型类型参数。这意味着您可以给它们命名,如果需要,还可以给它们一个约束(例如 ChildClass<A extends Wrapper>)。 Wrapper<A> 在这种情况下是什么意思?编译器无法理解它。

绝对有可能在 extends 的另一边使用 Wrapper<A>,因为那里 A 不是(正式的)类型 参数,而是类型参数。这意味着您正在 使用 之前定义的类型参数,您可以在那里生成新类型。

因此,根据您实际想做什么,有两种选择供您选择:

A 可分配给 Wrapper

当您想确保 AWrapper 或派生的 class 时,请使用通用约束:

class ChildClass<A extends Wrapper> extends SuperClass<A>

AWrapper<>

的类型参数

如果 Wrapper<> 本身是一个泛型 class 或接口,并且您想使用 A 作为其类型参数,请执行以下操作:

class ChildClass<A> extends SuperClass<Wrapper<A>>