Definitelytyped: @types/express request's body object to T (generic)

Créé le 5 juin 2017  ·  3Commentaires  ·  Source: DefinitelyTyped/DefinitelyTyped

salut!

pourquoi ne pas changer le corps de la requête en T ? de cette façon, je peux être sûr de ce que contient mon objet.

dans express-serve-static-core/index.d.ts ligne 438 :

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

et je l'utilise comme ceci:

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

Commentaire le plus utile

Cela a du sens, je pense aussi qu'il existe un moyen d'inclure cette fonctionnalité sans casser les modifications en utilisant des génériques par défaut, par exemple :

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

Tous les 3 commentaires

D'accord, cela devrait être changé pour les personnes qui souhaitent taper leur corps de requête, la même chose devrait s'appliquer à cookies , params , query , @borisyankov qu'en pensez-vous ?

Je ne déteste pas cette idée, mais en même temps, il y a ce problème de types/express qui explique que body a été omis pour une raison. Cette raison étant que body n'existe pas nativement sur l'objet Express Request, mais est plutôt ajouté à cause de l'analyseur de corps.

Malheureusement, la version DefinitelyTyped de body-parser ne fonctionne pas avec la solution de contournement proposée. Donc, soit le corps doit être ajouté ici, soit DefinitelyTyped/body-parser doit être mis à jour.

Cela a du sens, je pense aussi qu'il existe un moyen d'inclure cette fonctionnalité sans casser les modifications en utilisant des génériques par défaut, par exemple :

interfare Request<B = any, Q = any, P = any, C = any> {
  body: B;
  query: Q;
  params: P;
  cookies: C;
}
Cette page vous a été utile?
0 / 5 - 0 notes