【发布时间】:2019-05-30 22:58:21
【问题描述】:
是否可以传入需要另一个泛型类型的泛型类型?这是我想做的:
abstract class MyClass<Stream> {
abstract doSomething1(): Stream<number> // TS error here: Stream does not take generic parameter
abstract doSomething2(): Stream<string> // TS error here: Stream does not take generic parameter
}
// Implementations of the abstract class:
class MyObservableClass extends MyClass<Observable> {
doSomething1() { // returns Observable<number> }
doSomething2() { // returns Observable<string> }
}
class MyPromiseClass extends MyClass<Promise> {
doSomething1() { // returns Promise<number> }
doSomething2() { // returns Promise<string> }
}
我也试过了:
doSomething<Stream, T>(): Stream<T>
但也不行。
【问题讨论】:
-
没有语法允许泛型类型参数本身是泛型的。
-
感谢@TitianCernicova-Dragomir。是 TS 限制,还是其他编程语言也一样?
-
有些语言支持这种泛型类型参数(Haskell 我相信但我不确定),但在 C# 或 Java 等主流语言中并不常见。
-
@TitianCernicova-Dragomir C++(我认为它是一种主流语言)有template template parameters,这是这里所要求的。
标签: typescript generics