我正在开发一个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服务器时,它才会抛出错误。
任何关于这方面的线索都会有帮助。提前感谢。
2条答案
按热度按时间kadbb4591#
这对我很有效。
我们需要做的第一件事是在项目的根目录下创建一个新的声明文件@types〉express〉index.d.ts。你会注意到这与我们的node_modules/@types文件夹中的文件名和路径完全相同。为了使Typescript声明合并工作,文件名和路径必须与原始声明文件和路径匹配。
https://dev.to/kwabenberko/extend-express-s-request-object-with-typescript-declaration-merging-1nn5
8cdiaqws2#
我认为你需要将你的文件命名为
index.d.ts
。同时尝试将代码修改为: