声明与打印机自定义接口合并
我正在寻找添加一个用户属性的express.Requesttypes,使得req.user将是我的自定义typesIUser。 我读了声明合并是要走的路,所以我创build了一个custom.d.ts文件
declare namespace Express { export interface Request { user?: IUser; } }
尽pipe打字稿现在允许我使用req.user,但它被定义为键入any 。 在我的types文件中导入IUser并没有帮助,因为它只是使打字机变得更糟,现在根本不能识别req.user。 我的打字怎样才能被IDE视为IUser?
首先,不要一直延伸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! });