Definitelytyped: Pengetikan ekspres tampaknya tersedak middleware

Dibuat pada 30 Mei 2018  ·  3Komentar  ·  Sumber: DefinitelyTyped/DefinitelyTyped

  • [√] Saya mencoba menggunakan paket @types/xxxx dan mengalami masalah.
  • [√] Saya mencoba menggunakan tsc versi stabil terbaru. https://www.npmjs.com/package/typescript
  • [√ ] Saya punya pertanyaan yang tidak pantas untuk StackOverflow .
  • [ ] [Sebutkan](https://github.com/blog/821-mention-somebody-they-re-notified) penulisnya (lihat Definitions by: di index.d.ts ) agar mereka dapat menanggapi.

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

Saya mengalami masalah saat ini menggunakan @types/express 4.11.1 & TSC 2.8.3.

Kode berikut tidak dapat dikompilasi:

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

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

Saya mendapatkan kesalahan berikut:

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'.

Komentar yang paling membantu

Hai Jimmy,

Anda perlu mengimpor seperti ini...

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);

Alasannya adalah Request , Response , NextFunction dari Node.js tidak sama dengan Express.

Semoga ini membantu.

Semua 3 komentar

Hai Jimmy,

Anda perlu mengimpor seperti ini...

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);

Alasannya adalah Request , Response , NextFunction dari Node.js tidak sama dengan Express.

Semoga ini membantu.

Terima kasih, saya akan mencobanya!

Ini bekerja dengan baik. Terima kasih banyak, sekali lagi.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat