【问题标题】:Specifying type with class and interface in TypeScript在 TypeScript 中使用类和接口指定类型
【发布时间】:2015-02-20 23:37:13
【问题描述】:

我的背景来自于 Objective-C,您可以在其中指定同时具有类和接口的类型。我似乎在 TypeScript 中找不到任何显示这一点的文档,但它必须存在,对吧?

这是一个例子:

class Vehicle {}
class Car extends Vehicle {}
class Truck extends Vehicle {}

interface Electric{}

// These next lines are WRONG!
ChargeMyCar(car: Car<Electric>) { ... }
ChargeMyTruck(truck: Truck<Electric>) { ... }

这可能吗?语法是什么?

具有多个接口的类型怎么样?

【问题讨论】:

  • 布伦特 - 在阅读了您的问题几次之后,我不确定您在寻找什么。也许您可以展示您在 Objective-C 中使用的代码,然后可能会更清楚类似的 TypeScript 是什么。

标签: inheritance types interface typescript multiple-inheritance


【解决方案1】:

这实际上取决于您尝试使用 Electric 界面做什么。您可以使用以下语法:

class Vehicle {
    fuel: any;
}
class Car<T> extends Vehicle {
    fuel: T;
}
class Truck<T> extends Vehicle {
    fuel: T;
}

interface Electric {}

ChargeMyCar<T extends Electric>(car: Car<T>) { ... }
ChargeMyTruck<T extends Electric>(truck: Truck<T>) { ... }

上面的例子表明一辆汽车/卡车使用一种抽象类型的燃料,为了给一辆汽车/卡车“充电”,你必须有一辆使用 Electric 类型燃料的汽车/卡车。有点愚蠢的例子,但你了解语法吗?

多接口很容易,如果你想使用多个接口,你可以这样做:

class Vehicle {
    fuel: any;
}
class Car extends Vehicle { }
class Truck extends Vehicle { }

interface Electric { }

class ElectricCar implements Vehicle, Electric { }
class ElectricTruck implements Vehicle, Electric { }

ChargeMyCar(car: ElectricCar) { ... }
ChargeMyTruck(truck: ElectricTruck) { ... }

【讨论】:

  • 看了一堆之后,我认为这是正确的答案。我没想到要制作 ElectricCar 和 ElectricTruck 类型,但这似乎是最简单的答案。
  • 另一个实现可能是class ElectricCar extends Car implements Electric { },这可能就是你要找的。​​span>
猜你喜欢
  • 2020-01-10
  • 2020-01-04
  • 1970-01-01
  • 1970-01-01
  • 2020-06-21
  • 2018-09-15
  • 2022-01-04
  • 2021-02-05
相关资源
最近更新 更多