I have a React Typescript application that won't compile. Many components have a render method that is typed to return React.ReactNode
or React.ReactElement
. On compile, many errors similar to the following are reported:
TS2786: 'MessagesWidget' cannot be used as a JSX component.
Its instance type 'MessagesWidget' is not a valid JSX element.
The types returned by 'render()' are incompatible between these types.
Type 'React.ReactNode' is not assignable to type 'import("/home/node/app/node_modules/@types/react-calendar/node_modules/@types/react/index").ReactNode'.
Why is the compiler expecting ReactNode
as defined by the types bundled with react-calendar
? I do have @types/react-dom
installed as a dev dependency.
Other information that might be relevant:
- This project was compiling until a couple of days ago and there were no code changes when the compile started failing, so I suspect that a package update triggered this (even if that's not the root cause). The only dependencies that were updated in the time window when the compile started failing were
@types/react
and@types/react-dom
. Rolling these packages back to an older version did not fix the issue, however. - Changing my components render methods to return
JSX.Element
removes the compiler error, but there are third party components in the application where this is not possible.