状況
Typescript で React を書いていたらこんなエラーがでた。
Type 'Element' is not assignable to type 'FunctionComponent<Props>'.
Type 'Element' provides no match for the signature '(props: Props & { children?: ReactNode; }, context?: any): ReactElement<any, string | ((props: any) => ReactElement<any, string | ... | (new (props: any) => Component<any, any, any>)>) | (new (props: any) => Component<...>)>'.ts(2322)
エラーのでた部分はここ。
function MyComponent({ user }): React.FC<Props> {
return (
<div>{user.name}</div>
);
}
解決
function 式で書かずに arrow function で書きなおしたらエラーは消えた。
const MyComponent: React.FC<Props> = ({ user }) => {
return <div>{user.name}</div>;
};
あとがき
なんでなのかは分からない。