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之后就会提示:
我在nodejs的官方文档中看到这里的error应该是systemError,
但是我在node的声明文件中也没有找到有关Error或者SystemError的接口或是类型(也有可能是我找的方式不对),理论上把error定义成any就可以不报错,但是我不想把typescript写成anyscript,我想问下路过的大佬有知道这这种情况改怎么解决的吗?
回复
1个回答

test
2024-07-14
找到解决方法了,在nodemodule/@types/node文件夹中全局搜syscall,然后搜到了接口ErrnoException,
然后给error加上类型:NodeJS.ErrnoException:
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容