我正在使用一个默认添加uncaughtException
和unhandledRejection
侦听器的库。我希望将其删除。
这是我的代码:
["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编译器认为我希望使用event: Signals
函数签名。这不是我想要的!
是否可以告诉TypeScript我要使用哪一个?还是以其他方式解决问题?
答案 0 :(得分:0)
如果您查看UnhandledRejectionListener
,就会发现它的定义如下:
type UnhandledRejectionListener = (reason: {} | null | undefined, promise: Promise<any>) => void;
具有两个参数-并且由于SignalsListener
的定义如下:
type SignalsListener = (signal: Signals) => void;
typescript假定您要使用SignalsListener
类型。
要使其正常工作,您必须传递类型为UnhandledRejectionListener
的处理程序