Я использую библиотеку, которая по умолчанию добавляет uncaughtException
и unhandledRejection
слушателей. У меня sh для их удаления.
Вот мой код:
["unhandledRejection", "uncaughtException"].forEach((eventName) =>
process
.listeners(eventName)
.map((handler) => process.off(eventName, handler))
);
TypeScript дает мне эту ошибку:
No overload matches this call.
The last overload gave the following error.
Argument of type 'string' is not assignable to parameter of type 'Signals'.
Глядя на global.d.ts
в комплекте с @types/node
Я вижу, что объявления сделаны так:
listeners(event: "uncaughtException"): UncaughtExceptionListener[];
listeners(event: "unhandledRejection"): UnhandledRejectionListener[];
listeners(event: Signals): SignalsListener[];
Таким образом, похоже, что компилятор TypeScript считает, что я sh должен использовать сигнатуру функции event: Signals
. Что не то, что я хочу!
Есть ли способ сказать TypeScript, какой я хочу использовать? Или иначе решить проблему?