代码之家  ›  专栏  ›  技术社区  ›  chen

Typescript错误:“元素隐式具有“any”类型,因为类型“error”没有索引签名”

  •  0
  • chen  · 技术社区  · 6 年前

    代码在这里:

    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是默认的全局类型,我不知道如何处理错误。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Sajeetharan    6 年前

    任何一个错误都被认为是一个错误索引。试试这个,

     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);
            }
        }
    }