mirror of
https://github.com/aspnet/JavaScriptServices.git
synced 2025-12-22 17:47:53 +00:00
Consider removing redux-typed #1309
Closed
opened 2025-08-09 17:19:38 +00:00 by fergalmoran
·
0 comments
No Branch/Tag Specified
master
rybrande/masterToSrc
pakrym/no-console-fb
release/2.2
pakrym/remove-obsole-api-usage
maestro/release/2.2
maestro/master
release/2.1
release/2.0
rybrande/MergeRelease21IntoDev
rel/2.0.0-extensions
angular-animations-example
fix-angular-material-publishing
rel/2.0.0-templates
httpwithstatetransfer-example
rel/2.0.0-preview2-templates
aspnet-webpack-react-2.x
angular4-prerender-data-example
version-1.x
angular2-lazy-loading-example
581-isomorphic-react-cookies-example
example-using-typescript-paths-for-494
v1.0.x
angular2-materialize-example
redux-typed-1-x
primeng-example
font-awesome-example
karma-testing-example
2.2.0
2.2.0-preview3
2.2.0-preview2
2.2.0-preview1
2.1.1
2.1.0
2.0.4
2.1.0-rc1-final
2.1.0-preview2-final
2.0.3
2.1.0-preview1-final
2.0.2
2.0.1
rel/2.0.0
rel/2.0.0-preview2
Labels
Clear labels
2 - Working
2 - Working
3 - Done
3 - Done
3 - Done
3 - Done
3 - Done
3 - Done
3 - Done
angular
angular
angular
angular
angular
bug
bug
bug
bug
bug
bug
bug
bug
bug
core
core
core
core
core
core
core
duplicate
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
enhancement
external
external
P1
P1
P1
P1
P1
P1
P2
P2
P2
P2
P2
P2
P2
P2
P2
PRI: 1 - Required
react
react
task
task
up-for-grabs
up-for-grabs
up-for-grabs
waiting
waiting
waiting
waiting
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
fergalmoran
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github/JavaScriptServices#1309
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @SteveSandersonMS on 10/17/2016
@emzero and others have stated a preference for removing the
redux-typeddependency fromReactReduxSpaand instead only making use of the native type information provided by@types/react-reduxetc.You might be wondering why
redux-typedwas created, and why it's only (apparently) used in these project templates, not by the wider Redux community.redux-typedwas created about a year ago, because:propsfor components by merging together various other objects at runtime, e.g., like this. Because of this runtime-merging approach, there was no actual statically-determined type information that would give good completion hints, e.g., onthis.propsinside a component. As far as I can tell, the Redux community wasn't widely using TypeScript at that time.So,
redux-typedaddressed this by (1) obviously providing TypeScript type hints, and (2) by an admittedly non-obvious but quite effective use of TypeScript's inference features andtypeofoperators to allow type info to flow directly from your stores/reducers/etc via theprovidemapping into dynamically-constructed component-props types. It manages to create implicit types that combine all the properties from your stores/reducers/etc, in the same way that will happen at runtime.However, I haven't personally been promoting the use of
redux-typedvia all the usual marketing channels (blog posts, conference talks, etc.), and not surprisingly, the library hasn't become hugely widespread without that sort of promotion. Very few people really know what it's doing or what benefits it offers.Now as of October 2016, partly the original issues have subsided. For (1), there's now
@types/react-reduxetc., which covers most of the basics. But for (2), as far as I can tell, things have only improved slightly - examples like this suggest you still have to manually create TypeScript interfaces that duplicate the type information from your stores/actions/etc.What we need to decide now is:
redux-typed? It would be great if we could, because like @emzero and others have pointed out, it's pretty non-standard in the Redux community, and may be a barrier for people trying to make sense of code they see elsewhere. Even ifredux-typedstill has benefits, it's not clear that they are so essential it's worth the cost of having something unusual in the templates.redux-typedis so much better than the alternative that it has to stay? This approach is only really viable if some people step up to own its maintentance and promotion within the Redux community. I don't expect to have capacity to do that myself.If we go for option 1, then is somebody (@emzero?) willing to propose a PR that removes it, and updates the ReactReduxSpa template to contain the same functionality but without that dependency? I know the code will end up being more verbose because it will probably become necessary to specify things to TypeScript that
redux-typedwould have done automatically. But can the code still be straightforward enough for newcomers to work with?