반응형
상황
블로그 글 내용을 표시하는 React 어플리케이션을 개발 중입니다. 각 글은 제목, 내용, 고유 ID 등의 다양한 정보를 가지고 있습니다. PostDetail 컴포넌트는 props로 전달받은 글의 제목과 내용을 표시합니다.
interface PostDetailProps {
post: PostType
}
function PostDetail({ post }: PostDetailProps) {
return (
<div>
<h2>{post.title}</h2>
<p>{post.content}</p>
</div>
);
}
MyParent 컴포넌트에서 PostDetail 컴포넌트를 사용하고자 합니다. PostDetail의 post
타입은 어떻게 추론할 수 있을까요?
// MyParent.tsx
function MyParent() {
function getPost(): PostProps {
// how to get MyChild's "status" property type?!
}
const post = getPost();
return <PostDetail post={post} />;
}
해결 방법
React.ComponentProps를 사용하여 컴포넌트의 property type을 알 수 있습니다.
// MyParent.tsx
type PostProps = React.ComponentProps<typeof PostDetail>['post']
function MyParent() {
function getPost(): PostProps {
return { ... }
}
const post = getPost()
return<PostDetail post={post} />
}
이 예제에서, React.ComponentProps
를 사용하면 PostDetail 컴포넌트의 모든 property 타입을 가져옵니다. 그리고 ['post']
를 추가하여 PostDetail 컴포넌트의 post
property 타입을 선택합니다. 이렇게 하면 PostDetail의 post
property 타입을 추론할 수 있게 됩니다.
이 방식을 사용하면 PostDetail컴포넌트의 post property 타입을 명확하게 추론할 수 있으며, 타입 안정성을 확보할 수 있습니다.
더보기
검색 키워드 - typescript get component's property type
참고 글 https://stackoverflow.com/questions/43230765/typescript-react-access-component-property-types
반응형
'개발 > React' 카테고리의 다른 글
[React18] 새로운 기능 : Automatic Batching (0) | 2023.12.19 |
---|---|
React useEffect 제대로 사용해보자! (1) | 2023.07.23 |