Typescript:泛型类又扩展了另一个泛型类"/>
Typescript:泛型类又扩展了另一个泛型类
所以我正在做一个基本的网络服务,它应该连接到一个数据库来做基本的 crud 操作。由于这些操作是重复的,我制作了一个通用的
Service
类,它采用模型和dto作为类型。
import { UserModel, UserModelDTO } from './models';
interface Serviceable {
doSomething()
}
class Service<M, DTO> implements Serviceable {
public model: M
constructor(model: M) {
this.model = model;
}
read(): Array<DTO> {}
doSomething() {}
}
class UserService extends Service<UserModel, UserModelDTO> {}
const userService = new UserService(UserModel)
const records = userService.list()
此时一切正常,我可以声明任意数量的服务,但是在尝试将这些服务连接到控制器后我遇到了困难,因为我再次进行简单的 CRUD 操作我还想定义一个通用控制器,我可以在其中使用任何服务,只要它继承自原始
Service
类
class GenericController<T extends Service> {
public service: T;
constructor(service: T) {
this.service = service;
}
read(req, res, next) {
const records = service.read()
return records;
}
}
声明这个之后,编译器告诉我必须满足服务类的泛型类型,但这违背了我想要做的事情的全部目的。
我试着寻找一个例子来做到这一点,所以很可能我在寻找错误的东西或者我在声明中弄错了。
回答如下:在您的
T extends
类型参数约束中,您还可以将类型参数传递给Service
:
class GenericController<M, DTO, T extends Service<M, DTO>> {
// etc.
}
游乐场链接
更多推荐
Typescript:泛型类又扩展了另一个泛型类
发布评论