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

如何在tsserver+JSDoc环境下扩展express.Request的自定义属性

解决步骤

1. 修正tsconfig.json的include配置

你当前配置的include字段仅匹配了src目录下的js文件,根目录@types文件夹内的.d.ts声明文件没有被tsserver识别加载,首先需要新增声明文件的匹配规则:

{
  "compilerOptions": {
    // 保留原有所有配置不变
  },
  "include": ["src/**/*.js", "./@types/**/*.d.ts"],
  "exclude": ["node_modules"]
}

修改完成后重启tsserver(vim环境可执行:LspRestart或者对应LSP插件的重启命令,清除旧缓存)。

2. 修正Express类型扩展写法

打开./@types/types.d.ts文件,确保声明合并的写法符合规范,两种写法二选一即可:

全局命名空间扩展写法

import express from "express";

declare global {
  namespace Express {
    interface Request {
      // 可按实际业务替换成user对象的具体类型定义,暂时不确定类型可以写any
      user?: {
        id: string;
        username: string;
        // 补充user对象的其他字段
      }
    }
  }
}

模块扩充写法

declare module "express-serve-static-core" {
  interface Request {
    user?: any; // 替换为实际的user类型即可
  }
}

3. 生效验证

完成以上操作后,检查原有报错的req.user位置,类型报错会自动消失。
如果仍有报错,可检查@types文件夹路径、文件名是否拼写正确,确认.d.ts文件没有语法错误即可

内容的提问来源于stack exchange,提问作者root-aj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:27:04