类型“Session&Partial<SessionData>”上不存在属性“user”

我在 javascript 中有一个代码,我正在尝试将其转换为打字稿

route.get('/order', async(req,res) => {  
    var sessionData = req.session;
    if(typeof sessionData.user === 'undefined')
    {        
        res.redirect('/panel/login');
    }    

这是我曾经在 js 中正常工作的一段代码,但现在我收到以下错误user

“会话和部分”类型上不存在属性“用户”

我假设我应该为sessionData变量和(req, res)参数添加类型,但我不知道应该为其分配什么类型。

PS:我知道这个问题看起来很重复,但我已经尝试过其他类似问题的解决方案,但没有用

任何帮助,将不胜感激

回答

如express-session 类型评论中所述,您必须使用Declaration merging.

以下是您可以实施Declaration merging的方法express-session

import session from 'express-session';

declare module 'express-session' {
  export interface SessionData {
    user: { [key: string]: any };
  }
}


回答

我刚遇到和你一样的问题。这似乎是一个相当新的问题:请参阅此处的解释。

为了解决这个问题,我按照 github 问题中的描述重载了模块:

declare module "express-session" {
  interface Session {
    user: string;
  }
}

只需替换string为该字段所需的任何类型。


以上是类型“Session&Partial<SessionData>”上不存在属性“user”的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>