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?;蛘吣憧梢猿墤卸?,在最低級別使用任何關鍵字。
添加回答
舉報