[@mantine/core] clearer typescript error for polymorphic components #924
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.
As discussed on Discord, this PR changes the following structure:
to
This allows for clearer error messages when providing a wrong value as
component
: instead of having all props failing, now only thecomponent
prop fails.Furthermore it moves the conditional typing logic inside
PolymorphicComponentProps
directly to avoid duplicating it everywhere.Note: one use case was not discussed on Discord, it's using the "generic" structure:
Then the error is a bit less straightfoward, because it starts by saying that
component
prop is missing while required, then when we change to:The error moves to "component" and says "Type '"wrong"' is not assignable to type 'ElementType'"
I'm not quite sure why the docs tells users to use this structure though since simply providing the
component
props makes TS infer correctly the other props too. Using the generic component instance structure is redundant in this situation.