我正在尝试添加一个属性来使用打字稿从中间件表达请求对象。但是我不知道如何向对象添加额外的属性。如果可能的话,我宁愿不使用括号表示法。
我正在寻找一个解决方案,允许我编写类似的内容(如果可能的话):
app.use((req, res, next) => {
req.property = setProperty();
next();
});
您想要创建自定义定义,并使用 Typescript 中名为的功能声明合并 https://www.typescriptlang.org/docs/handbook/declaration-merging.html。这很常用,例如在method-override https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/method-override/index.d.ts.
创建文件custom.d.ts
并确保将其包含在您的tsconfig.json
's 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)
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)