명시 방법은 아래 조건에 따라 적절하게 작성하면 된다.
1)컴포넌트가 children
을 포함하는지
2)추가적인 타입 정보를 자동으로 제공할 것인지
3)props 타입을 명확하게 정의하고 싶은지
👉 지정한 type만 명시
Interface IProps { children : React.ReactNode; title: string; desc?: string; } Const Wrap = ({children, title, desc} : IProps) =>{ return ( … )}
React.FC
타입을 사용하지 않고, 함수 매개변수의 destructuring과 함께 props 타입을 명시함.IProps
타입을 직접 사용하여 컴포넌트의 props를 정의합니다.children
이 필요하지 않은 컴포넌트에서도 사용하기 좋음.children
을 자동으로 포함하지 않음 => children
이 필요할 때는 명시적으로 추가해야 함.defaultProps
, propTypes
, displayName
등의 타입 정보를 자동으로 포함하지 않음.👉 React.FC 타입 사용하여 명시.
Const Wrap : React.FC<IProps> = ({children, title, desc}) =>{ return ( … )}
React.FC
(또는 React.FunctionComponent
) 타입을 사용하여 컴포넌트를 정의한다.IProps
제네릭을 통해 props의 타입을 정의한다.IProps
타입을 따른다.children
을 포함 => children
을 명시적으로 추가할 필요 없음!defaultProps
, propTypes
, displayName
등의 추가적인 타입 정보를 자동으로 제공.children
이 항상 props에 포함되므로, children이 필요 없는 컴포넌트에는 부적합할 수 있음.React.FC
의 제네릭을 통해 전달된 props 타입이 props로 명시되지 않는 경우, 타입 오류를 쉽게 간과할 수 있음.