TypeScript Express 错误函数

标签 typescript express typescript-typings

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/

相关文章:

css - Angular2 - 将 [_ngcontent-mav-x] 添加到样式

javascript - typescript : logic to covert string array into custom object

http - 如何在Angular2中获取http请求中的状态代码

TypeScript:使用字符串文字时的类型推断

typescript 无法使用定义为 T 类型键子集的键来索引类型 T

javascript - 找不到名称 'ReadableStream'(简单 git, Node )

node.js - 创建 React 应用程序 http-proxy-middleware 不工作

node.js - Node 自定义错误处理程序中间件优化?

node.js - Node.js 中的 spawn 与 exec - child_process

css - 如何在 rollup 中生成 css 类型