TypeORM - 通用实体创建

时间:2021-02-16 16:23:34

标签: typescript generics typeorm

我试图在 CRUD 系统的上下文中概括我的实体创建系统,以避免冗余代码重复。

基类 CrudController<T> 应提供通用方法 createEntity(data),该方法创建并返回具有给定数据的实体。数据类型为 Partial<T>

在扩展 StateController 的派生类 CrudController<State> 中,我将其实现为:

protected createEntity(data: Partial<State>): Promise<State> {
    const repository = getRepository(State);
    const entity = repository.create(data);
    return repository.save(entity);
}

... 完美运行。但是,当我尝试使用以下内容将其推广到基类时:

protected createEntity(data: Partial<T>): Promise<T> {
    const repository = getRepository(this.entityType);
    const entity = repository.create(data);
    return repository.save(entity);
}

... 我遇到了 TypeScript,抱怨没有与调用匹配的重载。我知道 Repository.create(...) 的签名需要 DeepPartial<T> 而不是简单的 Partial<T>,但这对于非泛化方法效果很好,那么为什么不在这里呢?

泛型上是否存在某种类型约束,我遗漏了什么?

0 个答案:

没有答案