在TypeScript中使用类和接口指定类型

时间:2014-12-22 20:32:46

标签: inheritance types interface typescript multiple-inheritance

我的背景来自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>) { ... }

这可能吗?语法是什么?

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

1 个答案:

答案 0 :(得分:2)

这实际上取决于您尝试使用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>) { ... }

以上示例显示汽车/卡车采用抽象类型的燃料,并且为了“充电”汽车/卡车,您必须拥有带有电动燃料的汽车/卡车。有点愚蠢的例子,但你明白语法吗?

多个接口很简单,如果您想使用多个接口,则可以执行以下操作:

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) { ... }