3 回答
TA贡献1804条经验 获得超7个赞
您应该能够利用鸭子类型来概括EntityTargets 的功能:
interface NamedThing {
name: string
}
async getName<Entity extends NamedThing>(id: number, target: EntityTarget<Entity>): Promise<string> {
const named = await this.conn.getRepository<Entity>(target).findOne(id);
return `${named && named.name}`;
}
// equivalent calls are now `getName(id, Order)`, `getName(id, Service)`, etc.
TA贡献1890条经验 获得超9个赞
我强烈建议查看 https://www.typescriptlang.org/docs/handbook/generics.html
如果愿意,您可以传入类型 T(并返回类型 T)。
async getServiceName<T>(id: T): Promise<string> {
const service = await this.conn.getRepository(Service).findOne(id);
return `${service.name}`;
}
显然,您必须重载 findOne 函数才能获取任意数量的类型 T。或者你可以超级懒惰,在最低级别使用任何关键字。
添加回答
举报