Definitelytyped: @ types / expressリクエストのbodyオブジェクトをT(汎用)

作成日 2017年06月05日  ·  3コメント  ·  ソース: DefinitelyTyped/DefinitelyTyped

ちょっと、そこ!

リクエストの本文をTに変更してみませんか? そうすれば、オブジェクトに何が含まれているかを確認できます。

express-serve-static-core / index.d.tsの438行目:

interface Request<T> extends http.IncomingMessage, Express.Request {
...
...
body: T
...
...

そして私はそれを次のように使用します:

updateUser = (req: Request<User>, res: Response, next: NextFunction) => {
   const userToUpdate = req.body;
...
...
}

最も参考になるコメント

理にかなっています。また、デフォルトのジェネリックを使用して、変更を壊さずにこの機能を含める方法があると思います。例:

interfare Request<B = any, Q = any, P = any, C = any> {
  body: B;
  query: Q;
  params: P;
  cookies: C;
}

全てのコメント3件

同意しました。リクエストの本文を入力したい人はこれを変更する必要があります。同じことがcookiesparamsquery@ borisyankovにも当てはまります。どう思いますか。

私はこのアイデアを嫌いではありませんが、同時に、types / expressからこの問題があり、 bodyが理由で省略されていることを説明しています。 その理由は、 bodyがExpress Requestオブジェクトにネイティブに存在せず、body-parserのために追加されるためです。

残念ながら、DefinitelyTypedバージョンのbody-parserは、提案された回避策では機能しません。 したがって、ここにbodyを追加するか、DefinitelyTyped / body-parserを更新する必要があります。

理にかなっています。また、デフォルトのジェネリックを使用して、変更を壊さずにこの機能を含める方法があると思います。例:

interfare Request<B = any, Q = any, P = any, C = any> {
  body: B;
  query: Q;
  params: P;
  cookies: C;
}
このページは役に立ちましたか?
0 / 5 - 0 評価