【发布时间】:2020-01-10 13:36:47
【问题描述】:
我按照这些思路创建了一个接口和抽象类:
interface ITest<A, B> {
testFunc: (input: A) => B;
}
abstract class AClass<A, B> {
abstract testFunc: (input: A) => B;
}
我有多个扩展AClass 的子类和多个实现ITest 的对象,使用A 和B 的各种类型。例如:
class SubClass1 extends AClass<number, string> {...}
class SubClass2 extends AClass<string[], boolean> {...}
对于抽象类或接口,我假设我可以声明可以保存这些类型的变量而无需特定的泛型类型参数,因为我只希望它是 AClass 的实例而不考虑泛型类型,沿着这些思路:
let aClass: AClass; // Could hold SubClass1 or SubClass2
let iTests: ITest[];
但我收到一条错误消息,说我的泛型类型需要两个类型参数。解决此问题的唯一方法是设置默认类型参数和/或使用any 作为它们的泛型类型参数声明这些变量(例如,ITest<any, any>[])?
【问题讨论】:
-
您为
aClass和iTests分配了哪些您不知道要使用的具体类型的值?只是为了确保我们能给出最好的答案。 -
@T.J.Crowder 我编辑了我的答案以提供更多上下文
标签: typescript typescript-generics