私はこの書くとき:@ types/express-sessionの使い方は?
import { Request } from 'express-serve-static-core';
router.post((req: Request, res, next) => {
req.session.user = user;
}
をTSCは私にエラーを与える:'Object is possibly 'undefined'.
ええ、私は知っている、急行元Request
タイプはsession
フィールドがありません。だから私はreq
に余分なフィールドsession
とsessionID
タイプを追加したい
declare global {
namespace Express {
interface Request {
session?: Session;
sessionID?: string;
}
//....
}
:
私は@types/express-session
index.d.ts
ファイルをチェックし、これを発見しました。
どうすれば使用できますか?このように:req: Request & ExpressSessionRequest
。
したがって、req
は元のRequest
タイプと追加フィールドタイプの両方を持ちます。@types/express-session
が追加されます。 express-session
のためのタイピングはすでにdeclaration merging経由Request
インターフェースにプロパティを追加します -
はい。私の間違い。私は 'session'と' sessionID'がオプションのプロパティであることを忘れています。しかしそれは理にかなっていますか? 'express-session'を使うときに' session'と 'sessionID'のプロパティが常に' req'に存在すると私は常に思っています。 – novaline
私は 'express-session'とは分かりません。 'session'と' sessionID'プロパティが常に存在するなら、型を更新する必要があります。プロパティを自分で上書きしたい場合は、私の更新された回答でそのオプションを試すことができます。 – Saravana