У меня есть компонент, который выполняет вызов метода службы.Этот компонент является базовым компонентом, поэтому дочерние компоненты предоставляют службу, используя super()
, как показано ниже:
export class ParentComponent {
constructor(protected myService: ServiceOne | ServiceTwo | ServiceThree | any) {
}
register(formData) {
let response = await this.myService.register(formData);
}
}
export class ChildComponent extends ParentComponent {
constructor(protected serviceOne: ServiceOne) {
super(serviceOne);
}
}
Каждая служба (ServiceOne
, ServiceTwo
и ServiceThree
) все простираются оттот же базовый сервис с общим register()
методом.
@Injectable()
export class ServiceOne extends BaseService {
register(user) {
return this.post('url', user);
}
}
export class BaseService {
protected post(url, data) {
return this.http.post(url, data);
}
}
Все это прекрасно работает, пока я включаю any
в ParentComponent
.Но когда я удаляю any
из типа объединения, я получаю:
Cannot invoke an expression whose type lacks a call signature. Type ‘(user => Promise<any>) | (user => Promise<any>) | (user => Promise<any>)’ has no compatible call signature.
Есть ли чистый способ сделать это, не прибегая к any
?