J'ai un composant React function qui vérifie si children est un tableau. Si ce n'est pas un tableau, il le renvoie. Sinon, il mappe sur les enfants et renvoie du JSX.
import React from 'react'
interface Props {
children: React.ReactNode
}
const LineBreak: React.FC<Props> = ({ children }): any => {
if (!Array.isArray(children)) return children
return (
<>
{children.map((child, i, arr) => {
if (i + 1 === arr.length) return child
return <>{child}<br /></>
})}
</>
)
}
export default LineBreak
Ce que je voudrais faire, c'est remplacer le any
sur la ligne 7. Je pense logiquement que le changer en React.ReactNode
suffirait, mais cela déclenche l'erreur de type :
Type '({ children }: PropsWithChildren<Props>) => ReactNode' is not assignable to type 'FC<Props>'. Type 'ReactNode' is not assignable to type 'ReactElement<any, any>'. Type 'string' is not assignable to type 'ReactElement<any, any>'.ts(2322)
J'aurais vraiment besoin de quelques conseils sur la façon de lire correctement ces messages d'erreur.
J'ai également essayé de contourner ce message d'erreur en changeant le type de retour en string|React.ReactNode
et je m'attendais à la même erreur parce que, d'après mes connaissances limitées en écriture de type React.ReactNode inclut le type string.