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의 반환 모양이 호출부마다 같아야 한다.