TYPESCRIPT - 快速会话处理

TYPESCRIPT - express-session handling

我正在努力将快速会话设置到我的 TS 项目中。当我对其进行基本设置(JS 方式)时,我创建了一个 MW,它在每个 API 需求时被调用,这样我就可以在我的会话中创建或不创建新的用户数组。

import {Request, Response, NextFunction} from 'express'

module.exports = (req: Request, res: Response, next: NextFunction) => {
    console.log('session checker : ', req.session)
    if (!req.session){
        req.session.user = []
        console.log('session initialized')
    }
    next();
}

斗争在.user 上,TS 向我显示此错误

Property 'user' does not exist on type 'never'.

你有克服它的想法吗?

提前致谢,

保罗

根据 express-session 类型的 source code,您需要自己定义 SessionData 中可用的属性(在您的代码库中的某处):

    /**
     * This interface allows you to declare additional properties on your session
object using [declaration merging]
(https://www.typescriptlang.org/docs/handbook/declaration-merging.html).
     *
     * @example
     * declare module 'express-session' {
     *     interface SessionData {
     *         views: number;
     *     }
     * }
     *
     */
    interface SessionData {
        cookie: Cookie;
    }

我建议你这样做,因为你更了解用户具有哪些属性:

例如(也许你有不同的数据)在你项目的 index.d.ts 文件中:

     declare module 'express-session' {
         interface SessionData {
             user: string;
         }
     }