typescript - TYPESCRIPT - 快速会话处理
问题描述
我正在努力在我的 TS 项目中设置快速会话。当我对其进行基本设置(JS 方式)时,我创建了一个在每个 API 需求时调用的 MW,这样我可以在我的会话中创建或不创建新的用户数组。
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 类型的源代码,您需要自己定义 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;
}
}
推荐阅读
- ios - 在 SWIFT 中访问 IOS 设备上的视频文件路径 URL
- javascript - 无限循环:BFS 获取嵌套对象的所有值(Javascript)
- javascript - 表单显示输入警告但仍提交
- r - R:列中定义的多个变量?
- xcode - 如何禁用来自 WatchOS 目标的通知以删除 ITMS-90078 警告?
- python - Python 线程同时运行所有函数
- python - 如何每x分钟发送一条消息?
- ios - 直接来自 App Bundle 的核心数据 - 一个崩溃另一个没有
- html - 如何在缩放线性渐变动画时将其居中?
- c - 如何将结构分配/清除到指针指向的特定地址?