javascript - 如何在 TS 和 TypeORM 中创建泛型函数?
问题描述
如何在 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.
推荐阅读
- reactjs - 我在与 expo 进行本机反应时出错:“语法错误意外令牌”错误。任何帮助解决它?谢谢
- javascript - Chrome 扩展用 newtab.html 覆盖 newtab,然后访问 cookie
- ios - 使用 iOS UNUserNotificationCenter,如何设置闹钟的开始和结束时间?
- vue.js - 在没有 NPM 或 CLI 的情况下使用 vue.js
- python - 如果装饰器以自下而上的方式堆叠,那么他们为什么不以这种方式执行呢?
- javascript - 有没有办法改变(或设置)Expo-Location 的正北?
- node.js - 使用feathersjs oauth调用未处理的拒绝
- laravel - Laravel 与 Google BigQuery
- vba - 访问 VBA TransferText 输出记录乱序
- azure-web-app-service - 什么 Rbac 操作/权限将允许 Azure 应用服务网络访问限制