#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 или любой другой песочнице