使用Typescript扩展Express Request对象
我正在尝试添加一个属性以使用Typescript从中间件表达请求对象。但是我不知道如何向对象添加额外的属性。如果可能的话,我宁愿不使用括号符号。
我正在寻找一种解决方案,允许我编写与此类似的内容(如果可能):
app.use((req, res, next) => { req.property = setProperty();
next();
});
回答:
您想要创建一个自定义定义,并在Typescript中使用一个称为声明合并的功能。这是常用的,例如在中method-
override。
创建一个文件custom.d.ts
,并确保将其包含在您tsconfig.json
的-部分中(files
如果有)。内容如下所示:
declare namespace Express { export interface Request {
tenant?: string
}
}
这将允许您在代码中的任何时候使用如下代码:
router.use((req, res, next) => { req.tenant = 'tenant-X'
next()
})
router.get('/whichTenant', (req, res) => {
res.status(200).send('This is your tenant: '+req.tenant)
})
以上是 使用Typescript扩展Express Request对象 的全部内容, 来源链接: utcz.com/qa/420658.html