TypeScript and React - children type? TypeScript and React - children type? reactjs reactjs

TypeScript and React - children type?


In order to use <Aux> in your JSX, it needs to be a function that returns ReactElement<any> | null. That's the definition of a function component.

However, it's currently defined as a function that returns React.ReactNode, which is a much wider type. As React typings say:

type ReactNode = ReactChild | ReactFragment | ReactPortal | boolean | null | undefined;

Make sure the unwanted types are neutralized by wrapping the returned value into React Fragment (<></>):

const aux: React.FC<AuxProps> = props =>  <>{props.children}</>;


You can use ReactChildren and ReactChild:

import React, { ReactChildren, ReactChild } from 'react'; interface AuxProps {  children: ReactChild | ReactChildren;}const Aux = ({ children }: AuxProps) => (<div>{children}</div>);export default Aux;

If you need to pass flat arrays of elements:

interface AuxProps {  children: ReactChild | ReactChild[] | ReactChildren | ReactChildren[];}