【发布时间】:2020-06-29 16:27:34
【问题描述】:
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();
}
}
并在这个类中扩展这个类:
@Injectable()
export class UserService extends ExtendedService<UserEntity> {
constructor(
protected readonly repository: Repository<UserEntity>
){
super();
}
public async register(data: DeepPartial<UserEntity>): Promise<UserEntity> {
const user = new UserEntity();
user.createdAt = new Date();
user.firstName = data.firstName;
user.lastName = data.lastName;
user.email = data.email;
user.role = UserRole.USER;
user.isDeleted = false;
const salt = await genSalt(10);
user.password = await hash(data.password, salt);
return await this.create(user);
}
}
但是在启动这个功能之后,我的控制台会抛出这个:
[Nest] 19980 - 2020-06-29 17:30:56 [ExceptionsHandler] Cannot read property 'create' of undefined +1378ms
TypeError: Cannot read property 'create' of undefined
at Repository.create (C:\Users\Piotruś\Desktop\auth\node_modules\typeorm\repository\Repository.js:49:29)
at UserService.create (C:\Users\Piotruś\Desktop\auth\dist\helpers\service\extended-service.js:27:40)
at UserService.register (C:\Users\Piotruś\Desktop\auth\dist\user\user.service.js:34:27)
at async UserController.register (C:\Users\Piotruś\Desktop\auth\dist\user\user.controller.js:25:9)
at async C:\Users\Piotruś\Desktop\auth\node_modules\@nestjs\core\router\router-execution-context.js:46:28
at async C:\Users\Piotruś\Desktop\auth\node_modules\@nestjs\core\router\router-proxy.js:9:17
所以,问题在于 ts 继承, 谁能告诉我我的继承有什么问题?
【问题讨论】:
-
您看错了
create电话。const entity: T = this.repository.create(data);是问题所在。this.repository是undefined。 -
@zzzzBov:那么,您能说明一下代码中要更改的内容吗?
-
错误在
Repository,但你没有显示它的代码。与继承无关... -
Repository是typeorm类 -
它在没有继承的情况下工作吗?
标签: javascript node.js typescript oop nestjs