컨텍스트 보호

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를 바로 구조 분해할 수 있습니다.