如何在TS和TypeORM中创建泛型函数?
我有多个这样的功能:
async getOrderName(id: number): Promise<string> {
const order = await this.conn.getRepository(Order).findOne(id);
return `${order.name}`;
}
async getServiceName(id: number): Promise<string> {
const service = await this.conn.getRepository(Service).findOne(id);
return `${service.name}`;
}
还有另一个...另一个...另一个...
因此,我需要创建一个通用函数以与许多实体一起使用
有人可以告诉我如何创建该功能吗?
您应该能够利用鸭子输入来泛化EntityTarget
s上的功能:
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.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句