React 컴포넌트의 타입을 결정할 때 ReactNode, JSX.Element 등의 여러 타입이 있다.
각 타입의 차이점을 이해하고, 상황에 맞게 타입을 정의하고자 글을 작성하였다.
<aside> 💡 이 외에도 더 많은 타입이 있지만, 주로 사용하는 타입에 대해서 우선 정리하려고 한다.
</aside>
interface ReactElement<P = any, T extends string | JSXElementConstructor<any> = string | JSXElementConstructor<any>>
{
type: T;
props: P;
key: Key | null;
}
const createElement: ReactElement = React.createElement('div', { className: 'name' }, 'React');
const jsx: ReactElement = <div className="name">React</div>;
ReactElement는 React.createElement를 호출하거나 JSX 문법을 사용해서 만든 객체의 인터페이스 이며, 이 객체는 type, props를 가지고 있다.
함수형 컴포넌트는 ReactElement를 반환하고, 클래스형 컴포넌트는 ReactNode를 반환한다.