Typescript:不可分配给类型的参数
我有一个抽象类: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 =>
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[];
构造函数(控制器:BaseController[]){
this.controllers=控制器;
}
公共注册表控制器容器=()=>{
for(让此.controllers的控制器){
container.registerSingleton('控制器',控制器);
}
};
}
用法:
类测试扩展BaseController{}
const controllerManager=新控制器([new test()])
但是,当我在容器中注册类时使用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)
“BaseController”类型的参数不可分配给“InjectionToken”类型的参数。
类型“BaseController”缺少类型“DelayedConstructor”中的以下属性:wrap、reflectMethods、createProxy、createHandlerts(2345)
我相信这就是为什么我需要确保我的控制器不是一个类:
public registerControllersInContainer = () => {
for (let controller of this.controllers) {
container.registerSingleton<BaseController>('Controllers', controller);
}
};
public registerControllersInContainer=()=>{
for(让此.controllers的控制器){
container.registerSingleton('控制器',控制器);
}
};
我不明白该如何解决这个问题。我们缺少你问题的背景。在纯类型脚本中,此代码是正确的。您使用的框架或库是什么?带有typescript的NodeJ请在typescript游乐场或任何其他沙箱中共享最小的可复制示例