With the tsx backend we currently type everything relevant as ReactElement. This generally makes sense as it's stricter than ReactNode, however we actually could permit consumers to return ReactNode in callbacks. We've observed an occasional need to wrap something assignable to ReactNode in unnecessary fragments to workaround this issue.
Example of expected change:
-export const f: (x: { g: (x: ReactElement) => ReactElement }) => ReactElement = x => <>foo {x.g(<>bar</>)}</>
+export const f: (x: { g: (x: ReactElement) => ReactNode }) => ReactElement = x => <>foo {x.g(<>bar</>)}</>
It should be noted in Unsplash Web specifically this may pose issues with our fancy custom internationalisation types.
With the
tsxbackend we currently type everything relevant asReactElement. This generally makes sense as it's stricter thanReactNode, however we actually could permit consumers to returnReactNodein callbacks. We've observed an occasional need to wrap something assignable toReactNodein unnecessary fragments to workaround this issue.Example of expected change:
It should be noted in Unsplash Web specifically this may pose issues with our fancy custom internationalisation types.