node中使用typescript的error类型问题?

如题,最近在学typescript,用koa-generator建立了一个项目,然后安装typescript,@types/node,把项目里面的js都改成了ts,bin/www也被我改成了www.ts,这个文件中有个onerror事件,代码如下:

server.on('error', onError);
function onError(error) {
  console.log('onError', error)
  if (error.syscall !== 'listen') {
    throw error;
  }

  var bind = typeof port === 'string'
    ? 'Pipe ' + port
    : 'Port ' + port;

  // handle specific listen errors with friendly messages
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

这段代码在js中没啥问题,改成ts之后就会提示:
image.png

我在nodejs的官方文档中看到这里的error应该是systemError,
image.png

但是我在node的声明文件中也没有找到有关Error或者SystemError的接口或是类型(也有可能是我找的方式不对),理论上把error定义成any就可以不报错,但是我不想把typescript写成anyscript,我想问下路过的大佬有知道这这种情况改怎么解决的吗?

阅读 1.9k
1 个回答

找到解决方法了,在nodemodule/@types/node文件夹中全局搜syscall,然后搜到了接口ErrnoException,

image.png

然后给error加上类型:NodeJS.ErrnoException:

image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题