fix(atoms): prevent inferring params/result from selector config options #292
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.
Description
Currently when an
AtomSelectorConfigobject specifies anargsComparator, Zedux infers the params type of the selector itself from theargsComparatorfunction's parameter types.This is a problem, especially since using Lodash's
isEqualfunction is one of the primary use cases ofargsComparator, which makes the selector's paramsany. Andanyis especially bad since it ruins all typing for theparamsargument of all Zedux APIs, making it easy to pass a non-array value with that selector by mistake.Fix this by adding TypeScript's
NoInfertype to theargsComparatorandresultsComparatorparameter types onAtomSelectorConfig. I'm not sure whyresultsComparatordoesn't have the same problem, but addNoInferto that too anyway.Add tests that reproduce the type errors and confirm the fix.