fix(makeStyles): make props mandatory when declared non-empty #3859
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.
Motivation
Currently
makeStyles
always returns a function which optionally requiresprops
.I think this is a typings bug because
props
should be required if the props are needed to create the styles.With my change if you specify a non empty type for the props the argument of the returned function would be required, otherwise optional.
Since
MyComponentStyleProps
is an empty objectprops
would not be required.If you don't specify a type
props
wouldn't be required either.Now you will have to specify
props
otherwiseuseStyles
will error out.I would have rather preferred to let the user specify the generic (ex.
makeStyles<MyComponentStyleProps>((theme, props)
) but that would force you to specify all generics so you won't be able to infer the stylesheet type for the second generic.Once microsoft/TypeScript#54047 gets merged it should be possible to do so.
Type of change
How Has This Been Tested?
example
appChecklist
yarn docs-build-api
Additional context