"TS2322: Type 'Timeout' is not assignable to type 'number'" when running unit tests
You could try with using window.setTimeout
instead of just setTimeout, this way the typescript one will be explicitly used
You can use:
let timeoutId: null | ReturnType<typeof setTimeout> = null
...
timeoutId = setTimeout(...)
It'll pick correct declaration depending on your context.
I'm seeing this discrepency when using vscode/tsc (NodeJS.Timeout) and running ts-jest (number). This is the only way the whole thing typechecks on both sides.