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

如何在TypeScript中使用Express.js的req.params获取参数

解决Express.js控制器中req.params的TypeScript类型报错

你的代码有两个关键问题导致了这个类型错误:

1. 拼写错误

你写的是req.param,但正确的属性名是req.params(末尾多一个s),这是容易忽略的低级错误。

2. TypeScript类型约束缺失

Express的Request类型支持泛型参数来定义URL参数、请求体等的类型。默认情况下req.params的类型是ParamsDictionary,它是一个宽松的索引类型,并不包含你定义的id字段,所以和严格要求id的IParam接口不兼容。

修正后的代码

import { Request, Response } from 'express'

interface IParam {
    id: string
}

// 给Request指定泛型,第一个参数就是URL参数的类型
const Update = (req: Request<IParam>, res: Response) => {
    const { id } = req.params // 现在不会有类型错误了
    // 此处id自动推导为string类型,可正常使用
}

export default Update

可选方案:类型断言(不推荐)

如果不想修改Request的泛型,也可以用类型断言临时跳过检查,但这种方式不如泛型安全,因为会绕过TypeScript的类型校验:

const { id } = req.params as IParam

本质原因是,默认的ParamsDictionary没有强制要求id字段,而你的IParam是严格约束的类型。通过给Request指定泛型,让TypeScript明确req.params的结构符合IParam,就能解决类型不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:55:20