问题描述
在使用Express / Typescript构建服务器时,我倾向于将express().listen
分配给变量server
,以便可以将其作为函数的参数发送,用于在任何情况下正常终止和停止服务器节点终止信号(SIGTERM
,SIGINT
,SIGHUP
)中的一个。下面的示例:
this.app = express();
this.server = this.app.listen(4000,() => {});
process.on('SIGTERM',() => stopHandler(this.server));
process.on('SIGINT',() => stopHandler(this.server));
process.on('SIGHUP',() => stopHandler(this.server));
async function stopHandler() {
console.log('Stopping...');
const timeoutId = setTimeout(() => {
process.exit(1);
console.error('Stopped forcefully,not all connection was closed');
},2000);
try {
await server.stop();
clearTimeout(timeoutId);
} catch (error) {
console.error(error,'Error during stop.');
process.exit(1);
}
}
在其他用例中,提到的类型将很有用,例如
class Server {
private: app: Application;
private: server; // Application.listen?
constructor() {
this.app = express();
}
...
问题:如果未指定正确的类型,noImplicitAny
会引发错误。
函数的返回值可以用作类型吗? (无论app.listen()
返回什么)
P.S。这是我的第一个StackOverflow问题,很抱歉,如果已经有一个关于此问题或类似问题的话题,或者它的格式不正确。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)