Nestjs 覆盖基本服务方法
Nestjs override base service method
我在基础服务中有以下方法:
crud-base.service.ts
export class CrudBaseService {
constructor(protected repo: MongoRepository<any>) {}
async create(data) {
// do stuff
}
}
在这里我希望能够创建我的自定义创建方法,所以我将我的方法命名为与基本服务相同的方法
items.service.ts
@Injectable()
export class ItemsService extends CrudBaseService {
constructor(
@InjectRepository(Item)
private itemsRepository: MongoRepository<Item>,
) {
super(itemsRepository);
}
}
async create(data) {
// overriding base service method
}
出现以下错误:
TS2416: Property 'create' in type 'ItemsService' is not assignable to the same property in base type 'CrudBaseService'
两个函数的签名必须相同,即参数和return类型必须相同。你应该明确这一点。
export class CrudBaseService {
constructor(protected repo: MongoRepository<any>) {}
async create(data: YourType): Promise<YourReturnType> {
// do stuff
}
}
@Injectable()
export class ItemsService extends CrudBaseService {
constructor(
@InjectRepository(Item)
private itemsRepository: MongoRepository<Item>,
) {
super(itemsRepository);
}
}
// this should work
async create(data: YourType): Promise<YourReturnType> {
// overriding base service method
}
我在基础服务中有以下方法:
crud-base.service.ts
export class CrudBaseService {
constructor(protected repo: MongoRepository<any>) {}
async create(data) {
// do stuff
}
}
在这里我希望能够创建我的自定义创建方法,所以我将我的方法命名为与基本服务相同的方法
items.service.ts
@Injectable()
export class ItemsService extends CrudBaseService {
constructor(
@InjectRepository(Item)
private itemsRepository: MongoRepository<Item>,
) {
super(itemsRepository);
}
}
async create(data) {
// overriding base service method
}
出现以下错误:
TS2416: Property 'create' in type 'ItemsService' is not assignable to the same property in base type 'CrudBaseService'
两个函数的签名必须相同,即参数和return类型必须相同。你应该明确这一点。
export class CrudBaseService {
constructor(protected repo: MongoRepository<any>) {}
async create(data: YourType): Promise<YourReturnType> {
// do stuff
}
}
@Injectable()
export class ItemsService extends CrudBaseService {
constructor(
@InjectRepository(Item)
private itemsRepository: MongoRepository<Item>,
) {
super(itemsRepository);
}
}
// this should work
async create(data: YourType): Promise<YourReturnType> {
// overriding base service method
}