Почему есть возможность обратиться к методу абстрактного класса и вызвать его?

Вот код из чужого проекта (который я сильно упростил, но суть та же):
export abstract class UserRepository {
  abstract findById(id: number): any
}

export class UsersService {
  constructor(
    private readonly usersRepository: UserRepository
  ) {}

  findById(id: number): any {
    return this.usersRepository.findById(id);
  }
}


Почему мы можем обратиться к методу findById абстрактного класса usersRepository и при этом не получить ошибку?
Разве абстрактные классы не представляют только то, как должен выглядеть реальный класс? Мы же должны для начало реализовать (заимплементить) абстрактный класс.
  • Вопрос задан
  • 73 просмотра
Пригласить эксперта
Ответы на вопрос 1
@diman2000
Скорее всего, в конструктор UsersService передаётся реализация (класс, наследующий UserRepository), а не сам абстрактный класс UserRepository
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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