【发布时间】:2018-06-16 05:08:35
【问题描述】:
我正在尝试扩展 express.Request 上可用的 express 的 Request 对象,以便它在会议。我尝试创建自己的类型文件 (d.ts) 并使用以下代码:
import * as express from 'express';
declare module 'express' {
export interface Request {
session: express.Request['session'] & {
myOwnData: string;
}
}
}
我收到以下错误:
'session' is referenced directly or indirectly in its own type annotation.
实现这个的正确方法是什么?
【问题讨论】:
-
更新导入
express的帖子 -
为什么不创建自己的请求?
interface MyRequest extends Request { session: string } -
因为当我这样做时,我的打字稿程序仍在使用原始界面而不是新界面。我将不得不手动导入并在任何地方使用另一个名称,除非我没有看到其他方式
-
尝试使用声明合并直接扩展静态类型。请注意,我没有找到声明
session的 d.ts(我在移动设备上)。其次,您可以尝试在之前键入别名并将别名类型用作session的静态类型。 -
会话正在由 express-session 模块添加。声明合并只是添加新类型而不是扩展它们。如果我想在请求界面中添加其他内容,我可以做到。我不能做的是更新请求中的会话。我也尝试使用类型别名来导入 Request 但程序仍将使用原始 Request 接口而不是更新的接口。
标签: typescript typescript-typings