我正在使用 TypeScript 开发 Express.js 应用程序,但遇到了无法解决的类型错误。这是相关代码:
import express from 'express';
import Stripe from 'stripe';
import { config } from '../config';
import { Request, Response } from 'express';
const router = express.Router();
// ... other code ...
router.post('/create-checkout-session', async (req: Request, res: Response) => {
// Route handler implementation
});
export default router;
当我尝试编译此文件时,出现以下错误:
No overload matches this call.
The last overload gave the following error.
Argument of type '(req: Request, res: Response) => Promise<express.Response<any, Record<string, any>> | undefined>' is not assignable to parameter of type 'Application<Record<string, any>>'.
Type '(req: Request<ParamsDictionary, any, any, ParsedQs, Record<string, any>>, res: Response<any, Record<string, any>>) => Promise<...>' is missing the following properties from type 'Application<Record<string, any>>': init, defaultConfiguration, engine, set, and 63 more.
该错误似乎与路由处理程序中的 req 和 res 参数的类型有关。我已从“express”导入请求和响应类型,但错误仍然存在。 这是我的问题: 是什么导致了这种类型不匹配? 如何正确键入路由处理程序来解决此错误? 使用 Express 时是否需要注意任何特定的 TypeScript 配置或类型定义? 任何帮助或见解将不胜感激。谢谢!
我已经尝试并观察到: 我从 Express 导入了请求和响应类型,并使用它们来输入路由处理程序参数。 我希望这能够解决类型不匹配的问题,因为这些类型应该与 Express 的路由器方法兼容。 但是,错误仍然存在,这表明 Express 类型的解释方式可能存在问题,或者 Express 版本与所使用的类型定义之间存在不匹配
请降级
@types/express
软件包来解决此问题。你可以这样做 npm i -D @types/express@4