【问题标题】:Extending Non Generic Interface with Generic Interface用通用接口扩展非通用接口
【发布时间】:2017-02-21 13:56:13
【问题描述】:

我可能想多了。基本上,我希望有一个实现一些属性的非泛型接口,然后创建第二种类型,用它自己的泛型属性实现该接口。

interface Car {
  model: string;
}

interface Car<T> extends Car {
  transmission: T;
}

TypeScript 错误:

“'Car' 的所有声明必须具有相同的类型参数。”

我能找到的唯一方法是将非通用接口命名为不同的名称,例如 CarBase。有什么建议吗?

【问题讨论】:

  • 你想做什么?为什么要将它分成两个同名的不同接口?相当于interface Car&lt;T&gt; { model: string; transmission: T }
  • 我希望其他代码使用非泛型引用。当我只想使用 Car 时,我正在做 Car 绕过类型检查。
  • 为什么它们必须同名?

标签: typescript


【解决方案1】:

你可以使用type alias来省去你写Car&lt;any&gt;的麻烦:

interface Car<T> {
    model: string;
    transmission: T;
}

type AnyCar = Car<any>;

【讨论】:

  • 这和写的一样吗:interface CarBase implements Car&lt;any&gt;?
  • 基本一样,只是接口和类型别名有区别。在Interfaces vs. Type Aliases中有解释
猜你喜欢
  • 1970-01-01
  • 2020-06-09
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多