【问题标题】:TypeScript Generic type of a generic typeTypeScript 泛型类型的泛型类型
【发布时间】: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


【解决方案1】:

回答自己:目前还不可能(2019 年 1 月)。

这里正在讨论这个问题:https://github.com/Microsoft/TypeScript/issues/1213

【讨论】:

  • 你应该接受你自己的答案,这有帮助。
猜你喜欢
  • 2021-12-06
  • 2019-10-06
  • 1970-01-01
  • 2019-09-17
  • 1970-01-01
  • 1970-01-01
  • 2020-01-05
  • 2021-01-03
  • 1970-01-01
相关资源
最近更新 更多