首页 > 解决方案 > 打字稿错误:“元素隐式具有'任何'类型,因为类型'错误'没有索引签名”

问题描述

代码在这里:

app.use((req: express.Request,
         res: express.Response, next: express.NextFunction) => {
  let err = new Error('Not Found');
  err['status'] = 404;
  next(err);
});

错误在这里:

src/server.ts(23,3): error TS7017: Element implicitly has an 'any' type because type 'Error' has no index signature.

由于 Error 是默认的全局类型,我不知道如何处理该错误。

标签: typescript

解决方案


Typescript 将 Error 视为 any 并且您正在尝试传递索引。试试这个,

 app.use((req: express.Request, res: express.Response, next: Function) => {
                let err: any = new Error('Not Found');
                err.status = 404;
                next(err);
            });
            let error = new ectrl.ErrorController();
            app.use('*', error.errorAction);
            return app;
}

你的 ectrl 在哪里

export module Controller {
    export class ErrorController extends ctrl.Controller {

        constructor() {
            super();
        }

        errorAction(err: any, req: Request, res: Response, next: Function) {
            let data = {
                message: err.message,
                error: err,
                title: err.message,
                layout: path.join(__dirname, '..', 'views', 'layouts', 'layout.hbs')
            };
            res.status(err.status || 500);
            res.render('error/error', data);
        }
    }
}

推荐阅读