我正在尝试添加一个属性以使用Typescript从中间件表达请求对象。但是我不知道如何向对象添加额外的属性。如果可能的话,我宁愿不使用括号符号。
我正在寻找一种解决方案,允许我编写与此类似的内容(如果可能):
app.use((req, res, next) => { req.property = setProperty(); next(); });
您想要创建一个自定义定义,并在Typescript中使用一个称为声明合并的功能。这是常用的,例如在中method- override。
method- override
创建一个文件custom.d.ts,并确保将其包含在您tsconfig.json的-部分中(files如果有)。内容如下所示:
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) })