导入打字稿的节点请求类型

时间:2019-06-07 08:45:34

标签: node.js typescript definitelytyped type-definition

我有一个用js在node中开发的小型代理服务器,我正在尝试用打字稿重写它。

我有以下代码:

http.createServer(onRequest).listen(config.port);
console.log(`proxy listening on port ${config.port}`)

function onRequest(local_req:, local_res) {
  console.log('serve: ' + local_req.url);

  const url = config.forward_url + local_req.url
[...]

一个打字稿抱怨

参数'local_req'隐式具有'any'类型.ts(7006)    参数“ local_res”隐式具有“ any”类型。ts(7006)

我已经做过npm i @types/node -D

我看到createServer方法的定义如下:

function createServer(options: ServerOptions, requestListener?: RequestListener): Server;

但是我没有RequestListener的定义

我用Google搜索它,发现它here(我认为它应该已经安装npm i @types/node -D),就像这样:

export function createServer(requestListener?: (request: ServerRequest, response: ServerResponse) =>void ): Server;

然后,我在寻找ServerRequest的定义,它的定义为here,但我的计算机上没有该定义。

我想我定义的定义不是我在npm中安装的定义。

我不知道如何处理节点类型的定义。

有人可以给我一个提示,告诉我如何下载节点中使用的类型的定义吗?

1 个答案:

答案 0 :(得分:0)

最后我可以这样解决它:

function onRequest(local_req: IncomingMessage, local_res: ServerResponse)

但是我不得不四处搜寻,发现与我安装的版本不同且不兼容的版本,并且编辑器(vscode)对此产生了误导。

我想知道是否有更好的方法来处理这类问题