2017-08-14 87 views
1

我正在尋找將用戶屬性添加到express.Request類型,使req.user將我的自定義類型IUser。我讀了聲明,合併是要走這樣的路我創建了一個文件custom.d.ts聲明合併與打字稿的自定義界面

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

雖然現在打​​字稿允許我使用req.user,得到它定義爲任何類型。在我的typings文件中導入IUser並沒有幫助,因爲它只會使typcript變得更糟,現在根本不能識別req.user。我的打字怎麼可以被IDE視爲IUser?

回答

1

首先,不要一直延伸ExpressRequest,因爲它不是所有的時間!您必須僅在特定路由中更改請求接口。

其次,不要使用可選字段?,因爲它不是可有可無的,一旦它的批准(我猜)

所有你必須做你的額外領域擴展ExpressRequest和註釋在你的路線。像這樣:

interface IMyReq extends Request { 
    user: IUser; 
} 

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

按預期工作!不知道爲什麼我沒有想到這一點! –