Improve types to support reducers with and without default handling #42
  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.
  
    
  
    
An attempt to unify original reducers as defined by redux project (takes
undefinedas state argument, namedReducer) and the way reducers were defined here (does not takeundefinedas state argument, renamed toPreloadedReducer). Please note that aReduceris always aPreloadedReduceras well. The types return the more generalReducerwhere possible.It handles the following use cases I could come up with:
initialState(removednull) returning aReducerinitialState(as before withnull), returning aPreloadedReducer(Personally don't see much value in this one. Maybe add another option withintialStateandReduceras second argument?)Reduceras first argument injecting the default state, returning aReducerPreloadedReducers, returning aPreloadedReducerI am not sure whether type inference is working the way it was before for all use cases. In my project (one
Reducerand multiplePreloadedReducer) type inference worked as expected. I could build some additional test cases if required.Naming of
PreloadedReducercould be improved.Related to pull request #38. Decided to redefine Reducer for now.