Fix: types for setTimeout/setInterval calls #5726
Merged
+24
−9
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue #, if available:
When
@types/node
is installed (for example, in a parent folder), TypeScript may interpret calls tosetInterval
(and similar timers) as returningNodeJS.Timeout
instead ofnumber
. This leads to inconsistent types across different environments and can cause issues in generated.d.ts
files.Description of changes:
To ensure a consistent approach that works regardless of whether Node types are present, we use
ReturnType<typeof setInterval>
(and similarly forsetTimeout
). This way, even if the compiler sees both the DOM and Node definitions, it will correctly infer a union type when necessary without unexpectedly locking us toNodeJS.Timeout
alone. This approach also future‑proofs code by not relying on environment-specific declarations.By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Pull Request Checklist:
ace.d.ts
) and its references: