【问题标题】:TypeScript Express Error Handler parameterTypeScript Express 错误处理程序参数
【发布时间】:2021-04-14 04:14:40
【问题描述】:

我的问题与TypeScript Express Error Function类似。

但问题的重点不同。为什么 TypeScript 无法识别 Express 的错误处理程序格式的类型?

我还安装了@type/express 模块。 当我改变时

// doesn't work showing type checking error
app.use((err, req, res, next) => {
    // SOMETHING
});

进入

// works.
app.use((err: any, req:express.Request, res: express.Response, next: express.NextFunction) => {
    // SOMETHING
});

,它可以工作。

【问题讨论】:

    标签: node.js typescript express error-handling


    【解决方案1】:

    按ctrl,cmd+点击就可以看到文档了

    export interface IRouterHandler<T> {
        (...handlers: RequestHandler[]): T;
        (...handlers: RequestHandlerParams[]): T;
        // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
        <P = ParamsDictionary, ResBody = any, ReqBody = any, ReqQuery = ParsedQs>(...handlers: Array<RequestHandler<P, ResBody, ReqBody, ReqQuery>>): T;
        // tslint:disable-next-line no-unnecessary-generics (This generic is meant to be passed explicitly.)
        <P = ParamsDictionary, ResBody = any, ReqBody = any, ReqQuery = ParsedQs>(...handlers: Array<RequestHandlerParams<P, ResBody, ReqBody, ReqQuery>>): T;
    }
    

    明确表示它是泛型类型,需要显式传递。

    因此建议显式传递类型,另一个原因可能是函数可能重载过多而无法推断任何类型。

    因为在某些情况下会推断其他方法的类型,例如getpost

    【讨论】:

    • 我看过你告诉我的文档。我不是 100% 明白它的意思,但我的问题已经解决了。谢谢你让我知道:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 2022-10-06
    • 2012-10-30
    • 2020-02-28
    • 2019-10-10
    • 1970-01-01
    • 2018-10-17
    相关资源
    最近更新 更多