Попытка добавить события прослушивания в TypeScript - PullRequest
2 голосов
/ 05 апреля 2019

Я пытаюсь добавить события слушателя в мой httpsServer, но у меня возникают проблемы при передаче правильных параметров / типов

this.httpsServer.listen(process.env.PORT || 3000);
this.httpsServer.on("error", onError);
this.httpsServer.on("listening", onListening(this.httpsServer));

export const onListening = (httpsServer: https.Server) => {
    const addrress = httpsServer.address();
    const bind = typeof addrress === "string"
        ? "pipe " + addrress
        : "port " + addrress.port;
    debug.info(`Listening on ${bind}`);
};

Событие ошибки работает, но для события прослушивания я получаю: // Argument of type 'void' is not assignable to parameter of type '(...args: any[]) => void'

1 Ответ

1 голос
/ 05 апреля 2019

Проблема в этой строке:

this.httpsServer.on("listening", onListening(this.httpsServer));

Вы передаете результат onListening(this.httpsServer) в качестве второго аргумента on, но onListening возвращает void.

Я думаю, что вы хотели сделать, это:

this.httpsServer.on("listening", () => onListening(this.httpsServer));

Эта функция передает on функцию, которая вызывает onListening всякий раз, когда получено событие "listening".

Вы также можете вернуть функцию из текущей onListening функции:

export const onListening = (httpsServer: https.Server) => () => {
  const addrress = httpsServer.address();
  const bind = typeof addrress === "string"
      ? "pipe " + addrress
      : "port " + addrress.port;
  debug.info(`Listening on ${bind}`);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...