gpt4 book ai didi

node.js - 声明与带有 typescript 的自定义界面合并

转载 作者:太空宇宙 更新时间:2023-11-04 00:18:26 25 4
gpt4 key购买 nike

我希望向express.Request 类型添加一个用户属性,以便req.user 属于我的自定义类型IUser。我读到声明合并是可行的方法,所以我创建了一个 custom.d.ts 文件

declare namespace Express {
export interface Request {
user?: IUser;
}
}

虽然 typescript 现在允许我使用 req.user,但它被定义为类型 any。在我的打字文件中导入 IUser 也没有帮助,因为它只会让 typescript 现在根本无法识别 req.user 变得更糟。我的输入如何被 IDE 视为 IUser?

最佳答案

首先,不要一直扩展Express Request,因为情况并非总是如此!您只需在特定路由中更改请求接口(interface)即可。

其次,不要使用可选字段,因为一旦获得批准,它就不是可选的(我猜)

您所要做的就是使用附加字段扩展 Express Request ,并在您的路线上对其进行注释。像这样:

interface IMyReq extends Request {
user: IUser;
}

app.post('/api/users-list', (req: IMyReq, res) => {
// Look ma a request with an authenticated user!
});

关于node.js - 声明与带有 typescript 的自定义界面合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45684007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com