Typed Hooks

Hook 타입은 값의 소유자와 수명 실패를 먼저 고정한다

Hook마다 깨지는 지점이 다르므로 상태 범위, cleanup, Provider 경계, DOM null 가능성을 분리해서 선언한다.

1. 소유자누가 값을 바꾸는가
2. 수명언제 시작하고 정리되는가
3. 경계없을 때 런타임 오류인가
4. 반환호출부가 어떻게 읽는가
Hook 고정할 계약 실패 지점 타입 처방
useState 상태 소유자와 빈 값 범위 초기값과 갱신값 불일치 User | null처럼 범위를 드러낸다
useEffect 요청 시작, 성공/실패, cleanup 언마운트 후 상태 갱신 AbortSignal과 결과 union을 함께 둔다
useContext Provider 존재와 기본값 정책 Provider 밖 사용 nullable 값을 안전 Hook으로 좁힌다
useRef DOM 참조와 mutable 값의 null 가능성 렌더 전 참조 접근 InputRef | null로 시작한다
Custom Hook 반환 tuple/object의 읽기 방식 호출부 추론 흔들림 반환 타입을 명명하고 외부 API처럼 유지한다

상태값의 소유자와 nullable 범위가 보이면 안전하다.

효과cleanup 이후 남는 값이 타입으로 구분되어야 한다.

재사용Custom Hook의 반환 모양이 호출부마다 같아야 한다.