Javascript Typescript中的继承有什么问题?
Typescript中的继承有什么问题 我创建这个类:Javascript Typescript中的继承有什么问题?,javascript,node.js,typescript,oop,nestjs,Javascript,Node.js,Typescript,Oop,Nestjs,Typescript中的继承有什么问题 我创建这个类: export class ExtendedService<T extends ExtendedEntity> { protected repository: Repository<T>; constructor( repository?: Repository<T> ){ this.repository = repository; }
export class ExtendedService<T extends ExtendedEntity> {
protected repository: Repository<T>;
constructor(
repository?: Repository<T>
){
this.repository = repository;
}
public async create(data: DeepPartial<T>): Promise<T> {
const entity: T = this.repository.create(data);
return entity.save();
}
}
所以,问题在于ts继承,
有人能告诉我继承有什么问题吗?您没有将
存储库
参数向下传递给基类。在构造函数中调用super()
时,必须提供所有基类参数
@Injectable()
export class UserService extends ExtendedService<UserEntity> {
constructor(
protected readonly repository: Repository<UserEntity>
){
super(repository);
}
...
}
@Injectable()
导出类UserService扩展了ExtendedService{
建造师(
受保护的只读存储库:存储库
){
超级(储存库);
}
...
}
如图所示,将baseclass repository参数设为必填项会导致Typescript抛出编译错误:
应为1个参数,但得到0
我建议您避免将参数设置为可选参数,除非有必要,如果有必要,请采取预防措施进行必要的空检查。您没有将
存储库
参数传递给基类。在构造函数中调用super()
时,必须提供所有基类参数
@Injectable()
export class UserService extends ExtendedService<UserEntity> {
constructor(
protected readonly repository: Repository<UserEntity>
){
super(repository);
}
...
}
@Injectable()
导出类UserService扩展了ExtendedService{
建造师(
受保护的只读存储库:存储库
){
超级(储存库);
}
...
}
如图所示,将baseclass repository参数设为必填项会导致Typescript抛出编译错误:
应为1个参数,但得到0
我建议您避免将参数设置为可选参数,除非必要,如果需要,请采取预防措施进行必要的空检查。您看到的是错误的
create
调用<代码>常量实体:T=this.repository.create(数据)代码>是问题所在this.repository
是未定义的
@zzzzBov:那么,您可以显示代码中要更改的内容吗?错误在repository
中,但您没有显示其代码。与继承无关…Repository
是一个typeorm
classIs它在没有继承的情况下工作吗?您看到的是错误的create
调用<代码>常量实体:T=this.repository.create(数据)代码>是问题所在this.repository
是未定义的
@zzzzBov:那么,您可以显示代码中要更改的内容吗?错误在repository
中,但您没有显示其代码。与继承无关…Repository
是一个typeorm
classIs它在没有继承的情况下工作吗?
@Injectable()
export class UserService extends ExtendedService<UserEntity> {
constructor(
protected readonly repository: Repository<UserEntity>
){
super(repository);
}
...
}