CourseGoal
에서 title
, description
을 사용하기 위해 interface
를 이용하여 타입 정의 // App.tsx
...
<CourseGoal title="title" description="description"/>
// Children.tsx
interface CourseGoalProps {
title: string;
description: string;
}
export default CourseGoal({title, description} : CourseGoalProps) {
return (
<div>
<h1>{title}</h1>
<p>{description}</p>
</div>
)
}
children
의 타입을 정의하려면 ReactNode
를 사용// App.tsx
<CourseGoal title="title>
<p>learn react with typescript</p>
</CourseGoal>
// CourseGoal.tsx
import { ReactNode } from "react";
interface CourseGoalProps {
title: string;
children: ReactNode
}
export default CourseGoal({title, description} : CourseGoalProps) {
return (
<div>
<h1>{title}</h1>
<p>{description}</p>
</div>
)
}
리액트에서 사용할 수 있는 모든 유효한 JSX 요소의 타입을 포함한 타입
포함하는 타입
<MyComponent/>
null
또는 undefined
PropsWithChildren
PropsWithChildren
은 컴포넌트에 children
속성을 자동으로 추가하고 타입을 ReactNode
로 정의
import {PropsWithChildren} from "react"
type CourseGoalProps = PropsWithChildren<{
title: string;
}>
...