//함수 선언을 사용
function Welcome(props: WelcomeProps): JSX.Element {
return <div></div>;
}
// 함수 표현식을 사용한 방식 3가지
const Welcome2: React.FC<WelcomeProps> = ({ name }) => {
return <div></div>;
};
const Welcome3: React.VFC<WelcomeProps> = ({ name }) => {
return <div></div>;
};
const Welcome4 = ({ name }: WelcomeProps): JSX.Element => {
return <div></div>;
};
3가지 모두 리액트의 요소를 나타내는 타입인데, 차이점이 존재한다.
JSX.Element < React.ReactElement < React.ReactNode ( 포함관계)
declare global {
namespace JSX {
interface Element extends React.ReactElement<any, any> {}
}
}
interface Props {
icon: JSX.Element;
}
const Item = ({ icon }: Props) => {
const iconSize = icon.props.size;
return <li>{icon}</li>;
};
const App = () => {
return <Item icon={<Icon size={14} />} />;
};