【发布时间】:2017-07-22 11:01:05
【问题描述】:
我在向 node/express 项目添加类型方面有点挣扎。
我正在使用 TypeScript 2.2 和 express 4.x,并且我已经通过 npm 安装了类型:
npm install --save-dev @types/express
import * as express from "express"
const app: express.Application = express()
app.get("/hello", (req, res) => {
res.send("world")
})
这给了我:
src/app.ts(33,22): error TS7006: Parameter 'req' implicitly has an 'any' type.
src/app.ts(33,27): error TS7006: Parameter 'res' implicitly has an 'any' type.
我试图避免对所有请求处理程序都这样做:
(req: express.Request, res: express.Response) => {}
在我看来,它应该能够推断出这些。我错了吗?这不可能吗?
tsconfig.json:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"noImplicitAny": true,
"sourceMap": true,
"outDir": "dist",
"typeRoots": ["src/types", "node_modules/@types"]
},
"include": [
"src/**/*.ts"
]
}
谢谢!
【问题讨论】:
-
您可以将
noImplicitAny更改为 false,或更改您的每条路线。你不能同时拥有它 -
我不同意 Varedis 的观点,并且可以确认您编写的代码确实应该可以工作,并且应该自动输入
(req, res),因为app.get有一个类型。如果您使用 vscode(或任何其他处理 typescript 足够好的编辑器),请尝试在express.Application上执行“转到定义”。我唯一能想到的是,不知何故你没有从node_modules/@types得到类型。还可以尝试使用--traceResolution标志运行 typescript 并查看 express 类型的实际来源。
标签: node.js express typescript