fix(types)!: do not try to infer types of overloaded functions #2
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.
I had originally tried to support parameter and return type inference for overloaded functions in this library. TypeScript does not support this inference natively, so I used a (very cool) recursive type annotation to extract the different overload types.
This recursive utility, however, is prone to infinite recursion in various cases that I feel are more common that overloaded functions. In order to preserve a better experience for the general use case, this PR removes custom parameter and return type inference for overloaded functions.
This makes inference for non-overloaded functions much simpler and more reliable. For overloaded functions, there are now two options:
Parameter
andReturnType
utilities will always infer the last overload; so if you're stubbing based on the last overload, you're goodTFunc
type parameter ofwhen
when<(a: string) => string>(overloadedFn).calledWith('hello').thenReturn('world')