使用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

回到顶部