React.ReactElement
interface ReactElement<
P = unknown,
T extends string | JSXElementConstructor<any> = string | JSXElementConstructor<any>,
> {
type: T;
props: P;
key: string | null;
}
React.JSX.Element
interface Element extends React.ReactElement<any, any> {}
React公式サイトでは ReactElement推し のようです。
https://ja.react.dev/learn/typescript#typing-children
コンポーネントの子要素を型として記述する一般的な方法は 2 つあります。
・1 つ目は React.ReactNode 型を使用する方法でありこれは JSX で子要素として渡すことが可能なすべての型のユニオン型です。
・2 つ目は React.ReactElement 型を使用する方法です。こちらは JSX 要素のみを指し、文字列や数値のような JavaScript のプリミティブは含まれません。
npx types-react-codemod@latest preset-19 ./
TS2694: Namespace 'global.JSX' has no exported member 'Element'.
エラーを消したい時は、以下を import します
import { type JSX } from 'react';