express app.get 函数给出 "Argument types do not match parameters" 错误

express app.get function gives "Argument types do not match parameters" error

下面的代码...

app.get('/basic', (req, res) => {
    res.send({message: 'hello'})
})

在 WebStorm 2016.2.4

中生成消息 Argument types do not match parameters

我的 package.json 中的相关依赖项部分是:

"dependencies": {
  "@types/body-parser": "0.0.32",
  "@types/express": "^4.0.33",
  "@types/lodash": "^4.14.34",
  "@types/node": "^6.0.38",
  "body-parser": "1.15.1",
  "dotenv": "2.0.0",
  "express": "4.13.4",
  "lodash": "^4.13.1",
  "typescript": "^2.0.3"
},

当我删除 @types/express 包时,WebStorm 不再给出错误消息,但 TypeScript 编译器给出 error TS2307: Cannot find module 'express' 消息。

有没有办法进行不同的配置,或者 WebStorm 只是在 catch-up 使用 TypeScript 2?

有同样的问题。问题是我通过 typings install dt~express 从 dt/express 安装了类型,当我查看 express/index.ts 文件中 .get() 的类型定义时,发现不匹配:

get: {(name: string): any;} & IRouterMatcher<this>;

这不是我想要的,我改为执行 typings install express 从 npm/express 获取类型定义。

我的 typings.json 文件如下所示:

{
"dependencies": {
    "express": "registry:npm/express#4.14.0+20160925001530"
  },
...
}

编辑:这在 Webstorm v2016.3.1

中自行解决

在此之前,我发现的部分解决方案是以下列方式添加类型声明:

import * as express from 'express'

const app : express.Application | express.Router = express()

TypeScript 无法正确找到内部对象的声明 - 而不是完整地导入 express 并访问其子对象,例如:

import * as express from "express";
...
public app: express.Application;

import { NextFunction, Application, Router } from "express";
...
public app: Application;