@PatriotSY

Как наследовать конструктор?

Не очень понимаю, как правильно использовать IoC в наследовании сервисов. Есть базовый сервис:
export abstract class BaseService {
    protected constructor(protected httpClient: HttpClient) {}
}


Хочу создать наследника:

export class AuthService extends BaseService {
    getMember() {
         return this.httpClient.get('/member');
    }
}


Но не могу, т.к. свойство httpClient не найдено. В наследнике надо добавлять конструктор:

protected constructor(protected httpClient: HttpClient) { super(httpClient); }


И так в каждом наследнике. И тут наступает момент, что в BaseService надо добавить новую зависимость. И из-за этого придется во всех наследниках копипастить эту зависимость. Если брать аналогичный функционал PHP, то там конструктор пробрасывается в наследники, и не надо заниматься такой копипастой. Может я что-то не так делаю, и надо по другому наследовать конструктор?
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
Xuxicheta
@Xuxicheta Куратор тега Angular
инженер
export abstract class BaseService {
  protected httpClient: HttpClien
}

export class AuthService extends BaseService {
    constructor(
      protected httpClient: HttpClien
    ) { super() }
}


в целом это плохой подход. BaseService не нужен.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы