Typescript: не присваивается параметру типа

#typescript

#typescript

Вопрос:

у меня есть этот абстрактный класс:

 export abstract class BaseController {
  private path: string;
  private router: Router;
  constructor() {}
  private initializeRoutes() {}
  public getPath = (): string => {
    return this.path;
  };
  public getRouter = (): Router => {
    return this.router;
  };
}
  

и класс:

 export class Controller {
  private controllers: BaseController[];
  constructor(controllers: BaseController[]) {
    this.controllers = controllers;
  }
  public registerControllersInContainer = () => {
    for (let controller of this.controllers) {
      container.registerSingleton<BaseController>('Controllers', controller);
    }
  };
}
  

использование:

тест класса расширяет BaseController{}

const controllerManager = новый контроллер([новый тест()])

но поскольку я использую typescript при регистрации моего класса в контейнере, я получаю эту ошибку:

 Argument of type 'BaseController' is not assignable to parameter of type 'InjectionToken<BaseController>'.
  Type 'BaseController' is missing the following properties from type 'DelayedConstructor<BaseController>': wrap, reflectMethods, createProxy, createHandlerts(2345)
  

Я считаю, что именно поэтому мне нужно убедиться, что мой контроллер не является классом:

   public registerControllersInContainer = () => {
    for (let controller of this.controllers) {
      container.registerSingleton<BaseController>('Controllers', controller);
    }
  };
  

я не понимаю, как я могу это решить.

Комментарии:

1. Нам не хватает контекста вашего вопроса. В чистом typescript этот код правильный. Что за фреймворк или библиотеку вы используете?

2. nodejs с typescript

3. Пожалуйста, поделитесь минимальным воспроизводимым примером в typescript playground или любой другой песочнице