【发布时间】:2022-11-11 03:39:40
【问题描述】:
我想以这种方式实现通用存储库/服务模式
import { EntityTarget, FindOptionsWhere } from "typeorm";
import { AppDataSource as db } from "../database";
export const getAllSerivce = async <T>(
entity: EntityTarget<T>,
query?: FindOptionsWhere<T>
) => {
const repository = db.getRepository(entity);
const res = query ? await repository.findBy(query) : await repository.find();
return res;
};
但我收到了这个错误:
'EntityTarget' 类型的参数不可分配给 输入“实体目标”。类型'{类型:T;名称:字符串; }' 不可分配给类型 'EntityTarget'。 类型'{类型:T;名称:字符串; }' 不可分配给类型 '{ type: ObjectLiteral;名称:字符串; }'。 属性“类型”的类型不兼容。 类型 'T' 不可分配给类型 'ObjectLiteral'.ts(2345) generic.service.ts(5, 38):此类型参数可能需要
extends ObjectLiteral约束。
【问题讨论】:
-
您是否尝试过按照错误消息的提示进行操作?
async <T extends ObjectLiteral>(...) => ... -
@caTS 我认为它现在可以工作了
标签: typescript express typeorm typescript-generics