我希望将用户属性添加到express.Request类型,以便req.user将是我的自定义类型IUser。我读到合并的声明是要走的路,所以我创建了一个custom.d.ts文件
declare namespace Express {
export interface Request {
user?: IUser;
}
}
尽管typescript现在允许我使用req.user,但它被定义为类型 any 。在我的打字文件中导入IUser也没有任何帮助,因为它只会使得打字机更糟糕,现在根本没有识别req.user。如何通过IDE将我的输入视为IUser?
答案 0 :(得分:1)
首先,不要一直延长Express
Request
,因为情况并非如此!您必须仅在特定路由中更改请求接口。
其次,请勿使用可选字段?
,因为一旦获得批准,它就不是可选的(我猜)
您只需将Express
Request
扩展为附加字段,然后在路线上添加注释即可。像这样:
interface IMyReq extends Request {
user: IUser;
}
app.post('/api/users-list', (req: IMyReq, res) => {
// Look ma a request with an authenticated user!
});