Javascript 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; }

Typescript中的继承有什么问题

我创建这个类:

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);
    }
...
}