是否有为expresslisten保留的类型,如果没有,Typescript可以从函数的返回值中提取它吗?

问题描述

在使用Express / Typescript构建服务器时,我倾向于将express().listen分配给变量server,以便可以将其作为函数的参数发送,用于在任何情况下正常终止和停止服务器节点终止信号(SIGTERMSIGINTSIGHUP)中的一个。下面的示例:

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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...