快递中的 req 和 res 类型?

Ole*_*Ole 1 javascript rest node.js express typescript

在这个演示中,我尝试使用 DefintelyTypedResponseRequest类型作为req, res参数。但是,这不会编译:

const express = require('express');
const app = express();
app.get('/', (req:Request, res:Response) => {
    res.send('Hello Express Lovers!');
});
app.listen(3000, () => console.log('server started'));
Run Code Online (Sandbox Code Playgroud)

错误是:

           ^
TSError: ? Unable to compile TypeScript:
index.ts:4:9 - error TS2339: Property 'send' does not exist on type'Response'.
Run Code Online (Sandbox Code Playgroud)

Ry-*_*Ry- 7

您应该以 TypeScript 方式导入 Express,以便其类型 (in @types/express) 出现,从而允许从 推断出req和的类型:resapp.get

import * as express from 'express';
const app = express();
app.get('/', (req, res) => {
    res.send('Hello Express Lovers!');
});
app.listen(3000, () => console.log('server started'));
Run Code Online (Sandbox Code Playgroud)

更新演示

如果您无论如何都想显式键入它们,则必须导入类型:

import * as express from 'express';
import {Request, Response} from 'express';
const app = express();
app.get('/', (req: Request, res: Response) => {
    res.send('Hello Express Lovers!');
});
app.listen(3000, () => console.log('server started'));
Run Code Online (Sandbox Code Playgroud)