I am using typescript to build a microservice and handling signals as well. The code was working fine till a few days ago but recently it started throwing errors. Couldn't find a fix for the issue.
code for handling signals. It is just part of the file. src/main.ts
enum signals { SIGHUP = 1, SIGINT = 2, SIGTERM = 15 } const shutdown = (signal, value) => { logger.warn("shutdown!") Db.closeAll() process.exit(value) } Object.values(signals).forEach(signal => { process.on(signal, () => { logger.warn(`process received a ${signal} signal`) shutdown(signal, signals[signal]) }) })
When I do ts-node src/main.ts
The following error throws and exits.
/home/meraj/.nvm/versions/node/v8.10.0/lib/node_modules/ts-node/src/index.ts:245 return new TSError(diagnosticText, diagnosticCodes) ^ TSError: ⨯ Unable to compile TypeScript: src/main.ts:35:16 - error TS2769: No overload matches this call. The last overload gave the following error. Argument of type 'string | signals' is not assignable to parameter of type 'Signals'. Type 'string' is not assignable to type 'Signals'. 35 process.on(signal, () => { ~~~~~~ node_modules/@types/node/base.d.ts:653:9 653 on(event: Signals, listener: SignalsListener): this; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The last overload is declared here. at createTSError (/home/meraj/.nvm/versions/node/v8.10.0/lib/node_modules/ts-node/src/index.ts:245:12) at reportTSError (/home/meraj/.nvm/versions/node/v8.10.0/lib/node_modules/ts-node/src/index.ts:249:19) at getOutput (/home/meraj/.nvm/versions/node/v8.10.0/lib/node_modules/ts-node/src/index.ts:362:34) at Object.compile (/home/meraj/.nvm/versions/node/v8.10.0/lib/node_modules/ts-node/src/index.ts:395:32) at Module.m._compile (/home/meraj/.nvm/versions/node/v8.10.0/lib/node_modules/ts-node/src/index.ts:473:43) at Module._extensions..js (module.js:663:10) at Object.require.extensions.(anonymous function) [as .ts] (/home/meraj/.nvm/versions/node/v8.10.0/lib/node_modules/ts-node/src/index.ts:476:12) at Module.load (module.js:565:32) at tryModuleLoad (module.js:505:12) at Function.Module._load (module.js:497:3)
Any fix would be appreciated. Or If you can tell why it was working earlier just 2 days ago and not now.
The error "No overload matches this call" occurs when we call a function and pass it a parameter that doesn't match any of its specified overloads. To solve the error, make sure the function is being called with the correct number of arguments of the correct type, or use a type assertion.
The error "Argument of type string | undefined is not assignable to parameter of type string" occurs when a possibly undefined value is passed to a function that expects a string . To solve the error, use a type guard to verify the value is a string before passing it to the function.
This sometimes happens when you have passed an incorrect number of arguments to an anonymous function:
Object.keys(data).reduce((key: string) => { }, {});
will raise error:
No overload matches this call. Overload 1 of 3
Pass it the correct number of arguments:
Object.keys(data).reduce((acc: any, key: string) => { }, {});
I also had this strange issue, but I worked around it using type assertions (in my case using a string enum):
(Object.values(someEnum) as string[]).concat(otherStringArray);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With