快递.js/打字稿:错误 TS2339:类型"响应"上不存在属性"发送"



我在Phpstorm 2019.3中看到了这一点,在.send((下有一个红色的lint

// package.json
"dependencies": {
"express": "^4.17.1"
},
"devDependencies": {
"@types/express": "^4.17.2",
"tslint": "^5.12.0",
"typescript": "^3.2.2"
},
// index.ts
const express = require("express")();
express.get('/', (req: Request, res: Response): void => {
res.send('Express App Running') // TS2339: Property 'send' does not exist on type 'Response'
});

这些是错误的类型定义还是其他原因在起作用?

回调中的RequestResponse类型可能不是 Express 提供的。
确保导入正确的类型:

import express, { Request, Response } from "express";
const app = express();
app.get("/", (req: Request, res: Response) => {
res.send("foo");
});

如果您在项目中使用类型模块,则可以使用

import express, { Request, Response } from "express";
const app = express();
app.get("/", (req: Request, res: Response) => {
res.send("Welcome");
});

但是,如果您不(像我一样(,它在快速版本 4.18.2 中有些不同,我使用

const express = require('express')
const { request: Req } = require('express')
const { response: Res } = require('express')
app.get('/', async(req: typeof Req, res: typeof Res) => {
res.send("Welcome")
})

有没有更好的解决方案?可能。但是这个对我有用。

相关内容

最新更新