Typescript 中错误处理函数的四个参数的类型分别是什么?
app.use((err: ??, req: ??, res: ??, next: ??) => { });
我正在使用 VS Code,但没有提供任何提示。我在所有四个参数下都得到了红色波浪线。
错误显示“参数隐式具有‘任何’类型”。其实我对这条消息很困惑。如果它将它视为 any
类型,那么这不是一个有效的选择吗?
最佳答案
函数本身具有以下签名(取自 DefinitelyTyped ):
export type ErrorRequestHandler = (err: any, req: Request, res: Response, next: NextFunction) => any;
因此您可以将该函数声明为 ErrorRequestHandler
类型的变量,或者根据该定义键入参数。
注意:“express-serve-static-core”的类型由“express”的类型导入和重新导出,这是我查找上述定义的地方。
import type { ErrorRequestHandler } from "express";
const errorHandler: ErrorRequestHandler = (err, req, res, next) => {};
app.use(errorHandler);
关于与隐式 any
相关的第二个问题,这是导致问题的“隐式”部分,如果您明确键入 any
则不会任何错误(但也不会有任何类型;考虑使用 unknown
代替)。
您也可以在编译器配置中禁用 noImplicitAny
,但我个人不推荐这样做,因为它可以保护您免受几类错误的侵害。
关于TypeScript Express 错误函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50218878/