Mr.*_*ith 9 node.js npm express typescript express-session
我正在使用 npm 包进行 Typescript 项目。我想向 Express.Session 接口添加一个属性。
示例类:
class User {
name: string;
email: string;
password: string;
}
export = User;
Run Code Online (Sandbox Code Playgroud)
接口定义的新 d.ts 文件(不想编辑 express-session.d.ts):
declare namespace Express {
interface Session {
user: User
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序
import User = require('./User');
function (req: express.Request, res: express.Response) {
req.session.user //I want to use it like this.
}
Run Code Online (Sandbox Code Playgroud)
问题是,在 de d.ts 文件中不知道该用户。但是既不需要也不需要导入用户文件来解决这个问题。
如何将我自己的类添加到会话界面?
sli*_*wp2 16
可能是由于软件包版本,@Vitalii Zurian 提供的答案对我不起作用。如果要扩展会话数据req.session并通过 TSC 类型检查,则应扩展SessionData接口。
例如
User.ts:
class User {
name: string = '';
email: string = '';
password: string = '';
}
export = User;
Run Code Online (Sandbox Code Playgroud)
app.ts:
import express from 'express';
import User from './User';
declare module 'express-session' {
interface SessionData {
user: User;
}
}
function controller(req: express.Request, res: express.Response) {
req.session.user;
}
Run Code Online (Sandbox Code Playgroud)
包版本:
class User {
name: string = '';
email: string = '';
password: string = '';
}
export = User;
Run Code Online (Sandbox Code Playgroud)
结果:
聚会有点晚,但应该可以将您的界面导入到定义文件中
import { User } from '../models/user';
declare global {
namespace Express {
interface Session {
_user?: User
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6963 次 |
| 最近记录: |