【发布时间】:2020-07-29 19:32:10
【问题描述】:
我希望通过 super() 传递一个注入的微服务;调用父类。
抽象顶级父类:
export abstract class Crypto {
constructor() {
}
}
2 个子类:
export class BTC extends Crypto {
constructor(
@Inject('COIN_API_SERVICE')
private readonly apiService: ClientProxy, // this is an external microservice
) {
super();
}
}
export class ETH extends Crypto {
constructor(
@Inject('COIN_API_SERVICE')
private readonly apiService: ClientProxy,
) {
super();
}
}
还有一个子类的子类:
export class ERC20Token extends ETH {
constructor(
@Inject('COIN_API_SERVICE')
private readonly apiService: ClientProxy,
) {
super();
}
}
由于所有 ERC20 类的工作方式都与 ETH 实例完全一样,只是做了一些调整,因此从 ETH 扩展它是有意义的。但是,尝试编译此代码最终会出现以下错误:
TS2415:“ERC20Token”类错误地扩展了基类“ETH”。类型具有私有属性“apiService”的单独声明。
但是我需要同时创建 ETH 和 ERC20 Token 的实例,所以两者都需要有一个 apiService。如何解决这个问题?
【问题讨论】:
标签: typescript inheritance nestjs