Lea*_*ehr 5 middleware node.js express typescript
我尝试将我的 Express 服务器代码从 js 迁移到 typescript,并在尝试访问我在自己的中间件函数中添加到请求对象中的字段时遇到了问题。
例如,我正在做这样的事情:
app.use((req, res, next) => {
let account = checkAuthentication(req);
if(account) {
req.authenticated = true;
req.account = account;
next();
}
});
Run Code Online (Sandbox Code Playgroud)
现在我想稍后在其他中间件函数中访问这些属性,但是 @types/express 中的 .d.ts 文件当然以相同的方式为所有中间件函数定义了 req 对象。
现在我想出了两种方法来处理这个问题,但这两种方法似乎都很糟糕:
所以我的问题是:在这种情况下,如果有的话,我可以如何利用类型检查?如果我不能,这是否意味着像express这样的框架在静态类型语言(如C#)中是不可能的?
您可以使用模块扩充来扩展模块Request中定义的类型express
declare global {
namespace Express {
export interface Request {
account: Account;
authenticaticated: boolean
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3755 次 |
| 最近记录: |