fix(types): PropsWithChildren
not compatible with React 17
#1947
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.
Context
The newest version of react-day-picker is not compatible with @types/react 17.
Analysis
In the last version of the library some props were declare with PropsWithChildren. This interface originally in @types/react 17 is:
but in @types/react version 18 it has changed to
Please note the new default of unknown. This mean new typing relies on @types/react@18 doesn't have to provide the typing when using PropsWithChildren, however it is a must with @types/react@17. The usage of PropsWithChildren in react-day-picker without the argument for the generic type make it incompatible with projects using React 17.
Solution
When using PropsWithChildren, always include argument for the generic typing so that it's also compatible with React 17 codebase.
In this PR I also change some places where the prop is declare as equal to PropsWithChildren (e.g. MonthsProps) to explicitly type as { children: ReactNode }. This ensure that children is required, and there is no need to rely on PropsWithChildren since there is no additional prop.