打字稿类型后卫继承类
问题描述:
我在这里有一个打字稿问题。打字稿类型后卫继承类
我有很多模型类,这都是从BaseModel
class BaseModel {
public isChecked: boolean;
}
class Animal extends BaseModel {
public id: number;
}
class Car extends BaseModel {
public hasHotWheels: boolean;
}
继承现在我需要编写一个接受是从BaseModel继承的类参数的函数。我可以明确地列出所有的类,但是我有超过50个从BaseModel类继承的模型,所以我的问题是,我可以以某种方式声明,我期望函数参数从所述类继承,像这样
function foo(_input: inherits from BaseModel) {}
答
泛型可以帮助:描述仿制药的时候,用的TS路线图更多的选择
function foo<TModel extends BaseModel>(_input: TModel) {}
许多类的关键字都可以使用。类型推断可以很容易地处理这类事情,当它失败时,您可以明确地调用foo<FooModel>
,它仍然是类型安全的。
答
你为什么不只是使用父类的类型,你的功能,如:
class ChildA extends Parent {
}
class ChildB extends Parent {
}
function beAwesomeParent(parent: Parent) {
parent.isCool = true;
}
var childA = new ChildA();
beAwesomeParent(childA);
测试的TS游乐场没有一个错误。