Provider 밖 사용을 타입과 런타임에서 함께 막는다
초기값을 억지로 단언하지 않고 undefined를 타입에 포함한 뒤, 커스텀 훅에서 한 번만 검사하면 사용처는 안전한 값만 받습니다.
1. context
createContext<ThemeContextType |
undefined>(undefined)
Provider가 없을 가능성을 타입에 먼저 드러냅니다.
2. provider
value: ThemeContextType
실제 공유 값은 명확한 객체 타입으로 전달합니다.
3. hook
const ctx = useContext(ThemeContext)
커스텀 훅이 undefined 가능성을 한곳으로 모읍니다.
4. guard
if (!ctx) throw
검사 뒤에는 사용처에서 ctx를 바로 구조 분해할 수
있습니다.