我在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'
});
这些是错误的类型定义还是其他原因在起作用?
回调中的Request
和Response
类型可能不是 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")
})
有没有更好的解决方案?可能。但是这个对我有用。