Definitelytyped: As tipificações expressas parecem sufocar no middleware

Criado em 30 mai. 2018  ·  3Comentários  ·  Fonte: DefinitelyTyped/DefinitelyTyped

  • [√] Tentei usar o pacote @types/xxxx e tive problemas.
  • [√] Tentei usar a versão estável mais recente do tsc. https://www.npmjs.com/package/typescript
  • [√] Eu tenho uma pergunta que é inadequada para StackOverflow .
  • [√] [Mencione] (https://github.com/blog/821-mention-somebody-they-re-notified) os autores (veja Definitions by: em index.d.ts ) para que eles possam responder.

    • Autores: @borisyankov @ 19majkel94 @kacepe @micksatana @samijaber

Estou tendo o problema atual ao usar @ types / express 4.11.1 e TSC 2.8.3.

O código a seguir não pode ser compilado:

function aMiddleware(req: Request, res: Response, next: NextFunction) {
    next();
}

app.get('/foo/bar', aMiddleware);

Estou tendo o erro a seguir:

TS2345: Argument of type '(req: Request, res: Response, next: NextFunction) => void' is not assignable to parameter of type 'RequestHandlerParams'.
  Type '(req: Request, res: Response, next: NextFunction) => void' is not assignable to type '(RequestHandler | ErrorRequestHandler)[]'.
    Property 'includes' is missing in type '(req: Request, res: Response, next: NextFunction) => void'.

Comentários muito úteis

Oi Jimmy,

Você precisa importar assim ...

import { Express, Request, Response, NextFunction } from 'express';
const express = require('express');

const app: Express = express();

function aMiddleware(req: Request, res: Response, next: NextFunction) {
    next();
}

app.get('/foo/bar', aMiddleware);

O motivo é que Request , Response , NextFunction de Node.js não são iguais ao Express.

Espero que isto ajude.

Todos 3 comentários

Oi Jimmy,

Você precisa importar assim ...

import { Express, Request, Response, NextFunction } from 'express';
const express = require('express');

const app: Express = express();

function aMiddleware(req: Request, res: Response, next: NextFunction) {
    next();
}

app.get('/foo/bar', aMiddleware);

O motivo é que Request , Response , NextFunction de Node.js não são iguais ao Express.

Espero que isto ajude.

Obrigado, vou tentar!

Isso funciona muito bem. Muito obrigado, novamente.

Esta página foi útil?
0 / 5 - 0 avaliações