typescript 类型声明文件中的更改不会得到反映

qxsslcnc  于 2023-04-22  发布在  TypeScript
关注(0)|答案(2)|浏览(147)

我正在开发一个express应用程序,我想在Request的类示例上添加一个新属性。
因此,我在项目根目录下创建了一个类似于

type User = {
    name: string
}
declare namespace Express {
   export interface Request {
       user: User
   }
}

然后在我的中间件函数中的某个地方,

const user = req.user.name

上面的代码抛出错误说,
Property user does on exist on type Request<ParamsDictionary, any, any .....>
然而,VS代码并没有抱怨任何事情,只有当我尝试使用nodemon启动express服务器时,它才会抛出错误。
任何关于这方面的线索都会有帮助。提前感谢。

kadbb459

kadbb4591#

这对我很有效。
我们需要做的第一件事是在项目的根目录下创建一个新的声明文件@types〉express〉index.d.ts。你会注意到这与我们的node_modules/@types文件夹中的文件名和路径完全相同。为了使Typescript声明合并工作,文件名和路径必须与原始声明文件和路径匹配。
https://dev.to/kwabenberko/extend-express-s-request-object-with-typescript-declaration-merging-1nn5

8cdiaqws

8cdiaqws2#

我认为你需要将你的文件命名为index.d.ts。同时尝试将代码修改为:

declare global {
  namespace Express {
    interface Request {
        user: User
    }
  }
}
export {};

相关问题