TypeScript 泛型的泛型类型

4

是否有可能传入需要另一个泛型类型的泛型类型?这是我想做的:

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>

但是还是不起作用。

5
没有语法可以使一个通用类型参数本身成为通用的。 - Titian Cernicova-Dragomir
感谢@TitianCernicova-Dragomir。这是TS的限制,还是其他编程语言也一样? - jeanpaul62
2
有一些语言支持这种通用类型参数(我相信Haskell是其中之一,但我不确定),但在主流语言如C#或Java中并不常见。 - Titian Cernicova-Dragomir
1
@TitianCernicova-Dragomir C++(我认为是一种主流语言)具有模板模板参数,这就是所要求的。 - raphinesse
1个回答

3

你应该接受自己的答案,这很有帮助。 - Drax

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接