明确指定Express'“应用程序,请求,响应......的类型”

时间:2014-12-28 13:32:59

标签: express typescript

我正在努力更新一个简单的NodeJS + ExpressJS应用以使用TypeScript。我已经完成了它的工作,但是我已经适合添加一些额外的数据注释来在Visual Studio和Visual Studio中添加额外的类型检查和代码时自动完成/智能感知功能。 WebStorm。

我已经引用了最新的express.d.ts。我还创建了Express应用程序:

var app = express();

一切正常......但是当我输入类似

的内容时,我似乎无法弄清楚如何为应用添加类型信息以获取自动完成帮助
app.get('/',function(req,res){});

我尝试使用Express.Application(和{{1}注释 app (以及 req & res ) }}& .Request)但这并没有解决。看一下类型定义,我对如何编写typedef感到困惑,创建内部" e"参考......

很惊讶我找不到任何人要求&解决这个问题,因为express.d.ts typedef已针对ExpressJS 4.0进行了更新(之前我发现了 ExpressServer 的引用,但今天还没有。

想法?

3 个答案:

答案 0 :(得分:30)

经典案例“在一段时间没有成功的事情上工作,但当你最后发出一个问题寻求帮助时,你会立即弄明白”。

解决方案: 如果要使用其中一种类型,则必须导入模块,因为typedef位于typedef中的命名模块中。

在上面的代码中(位于我的 app.ts 中),我在 app 上获得了类型注释。由于我在文件顶部的导入声明为import express = require('express');,因此我可以注释 req & res 这样的参数:

app.get('/', function(req:express.Request, res:express.Response){});

在其他文件中,我试图在应用上获取类型注释,我错过了文件顶部的import语句。添加后,我可以为其添加注释:

public init(app: express.Application){}

答案 1 :(得分:16)

如果有人在2017年绊倒这个问题并使用更现代的TS。你应该只能npm install @types/express,然后就可以了。

答案 2 :(得分:6)

我认为其中一些答案可能会过时。以下对我有用:

import { Request, Response } from 'express';