Nestjs如何从泛型扩展服务

Nestjs如何从泛型扩展服务,nestjs,Nestjs,我已经实现了一个代码,由 从'@nestjs/common'导入{Type} 从'@nestjs/typeorm'导入{InjectRepository} 从“DataLoader”导入*作为DataLoader 从“lodash”导入{keyBy} 从“typeorm”导入{Repository} 导出接口IDataService{ 只读存储库:存储库 加载:(id:string | number)=>Promise loadMany:(id:Array)=>Promise } 类型构造函数

我已经实现了一个代码,由


从'@nestjs/common'导入{Type}
从'@nestjs/typeorm'导入{InjectRepository}
从“DataLoader”导入*作为DataLoader
从“lodash”导入{keyBy}
从“typeorm”导入{Repository}
导出接口IDataService{
只读存储库:存储库
加载:(id:string | number)=>Promise
loadMany:(id:Array)=>Promise
}
类型构造函数=new(…args:any[])=>I//Main Point
导出函数数据服务(实体:构造函数):类型{
类DataServiceHost实现IDataService{
@InjectRepository(实体)公共只读存储库:存储库
private get primaryColumnName():字符串{
返回此.repository.metadata.primaryColumns[0]?.propertyName
}
私有加载器:数据加载器=新数据加载器(异步ID=>{
const entities=wait this.repository.findByIds(ID为any[])
const entitiesKeyed=keyBy(实体,this.primaryColumnName)
返回ids.map(id=>entitiesKeyed[id])
})
公共异步加载(id:string | number):承诺{
返回此.loader.load(id)
}
公共异步loadMany(id:Array):承诺{
返回此.loadMany(ID)
}
}
返回数据服务主机
}
它应该是扩展到服务的通用功能

但是,我尝试使用以下方法实现它:

export class MyService extends IDataService(MyEntity)
但是现在,我尝试使用方法
load
loadMany
,但每次尝试时,都会出现一个错误。
有人知道如何引用这些方法来执行它们吗?

您需要在构造函数中注入存储库,所以:

导出函数数据服务(实体:构造函数):类型{ 类DataServiceHost实现IDataService{ 构造函数(@InjectRepository(entity)public readonly repository:repository){} // ... } }
您需要在构造函数中注入存储库,因此:

导出函数数据服务(实体:构造函数):类型{ 类DataServiceHost实现IDataService{ 构造函数(@InjectRepository(entity)public readonly repository:repository){} // ... } }
如果您的
MyService
是一个类,它不能扩展
接口
只需实现即可。只有接口可以扩展接口。那你能做什么呢?不要使用
extedns
而使用
implement
。如果您的
MyService
是一个类,它不能扩展
接口
只需实现即可。只有接口可以扩展接口。那你能做什么呢?不要使用
extedns
而是使用
implement