Fix disallow arrays in action creators #2155
Merged
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.
PR Checklist
Please check if your PR fulfills the following requirements:
PR Type
What kind of change does this PR introduce?
I think it is debatable whether this is a bugfix or a feature.
What is the current behavior?
I noticed that the new
createAction()
function has a clever type definition which prevents it from being used with a props object shaped like this{ type: any }
. Since an array is also an object in JavaScript it can still be used like this:Of course this becomes a little odd when the resulting function is used to create an actual action:
TypeScript thinks it has the type
string[] & TypedAction<"MY_ACTION_TYPE">
but in reality it is an object with the following shape:{ 0: hello, type: 'MY_ACTION_TYPE' }
.What is the new behavior?
A similar technique to the one which prevents
{ type: any }
is used to prevent arrays which meanscreateAction('MY_ACTION_TYPE', props<[]>())
will not compile anymore.Does this PR introduce a breaking change?
Technically this is a breaking change. But it will only break code which used
createAction()
in an unintended way.Other information
Please let me know if there is anything I need to change before this can be merged. And in case you think this is not necessary at all feel free to close it.
I also cleaned up the test suite of the action creator a little bit by removing an unused line of code and by inserting a missing blank line and a missing quote. Please let me know if I should better exclude those changes from this pull request.