1. ホーム
  2. node.js

[解決済み】Typescriptを使用してExpress Requestオブジェクトを拡張する

2022-04-18 06:13:30

質問

ミドルウェアからexpress requestオブジェクトにtypescriptでプロパティを追加しようとしています。しかし、オブジェクトに追加のプロパティを追加する方法がわかりません。できればブラケット記法は使いたくないのですが。

可能であれば)これと似たようなことを書けるような解決策を探しています。

app.use((req, res, next) => {
    req.property = setProperty(); 
    next();
});

解決方法は?

カスタム定義を作成し、Typescript の機能である 宣言のマージ . これは一般的に、例えば次のように使われます。 method-override .

ファイルを作成する custom.d.ts を作成し、それを必ず tsconfig.json 's files -セクションがあれば、それを使用します。内容は以下のようになります。

declare namespace Express {
   export interface Request {
      tenant?: string
   }
}

これによって、コードのどの部分でも、次のような使い方ができるようになります。

router.use((req, res, next) => {
    req.tenant = 'tenant-X'
    next()
})

router.get('/whichTenant', (req, res) => {
    res.status(200).send('This is your tenant: '+req.tenant)
})