首页 > 解决方案 > 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(...)期望 aDeepPartial<T>而不是 simple Partial<T>,但这对于非泛化方法工作得很好,那么为什么不在这里呢?

我缺少的泛型是否有一些类型约束?

标签: typescriptgenericstypeorm

解决方案


推荐阅读