You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Express.js异步箭头函数从JavaScript转换为TypeScript并解决类型报错

错误原因
  • 代码结构错误:原JS代码导出的是一个接收theFunc作为参数的高阶函数,但你编写的TS代码错误丢失了外层函数声明,把theFunc当成了要导出的变量,导致TS识别为未定义类型的独立变量。
  • 缺少类型标注:你没有给参数theFunc声明明确的类型,TS无法推断其类型,因此抛出Variable 'theFunc' implicitly has an 'any' type.ts(7005)报错。
解决方案

你可以按照以下代码修改,完全对齐原JS逻辑同时符合TS类型规范:

import { Request, Response, NextFunction, RequestHandler } from "express";

// 定义入参函数的类型:标准Express请求处理函数,可返回Promise或普通值
type AsyncRequestHandler = (req: Request, res: Response, next: NextFunction) => Promise<any> | any;

const catchAsyncError = (theFunc: AsyncRequestHandler): RequestHandler => {
  return (req, res, next) => {
    Promise.resolve(theFunc(req, res, next)).catch(next);
  };
};

export default catchAsyncError;

代码说明

  • 提前声明AsyncRequestHandler类型,明确标注入参theFunc的类型,直接消除隐式any报错
  • 导出函数的返回值指定为Express内置的RequestHandler类型,TS会自动推断返回的中间件中req、res、next的类型,无需重复标注
  • 功能和原JS代码完全一致,所有异步路由抛出的错误会被自动捕获并传递给next,交由全局错误中间件处理。

内容的提问来源于stack exchange,提问作者chewing gum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:24:03