type 패턴 지도

패턴은 멋보다 막아야 할 버그로 고른다

조건부 타입, 유틸리티 타입, 제네릭, 타입 가드, satisfies는 서로 대체재가 아니라 다른 실패를 막는 도구다.

props 규칙

둘 중 하나만 허용

링크 버튼처럼 조합 금지가 핵심이면 유니온과 never로 상태를 분리한다.

Discriminated Union
shape reuse

기존 타입 재가공

폼 초깃값, 카드 표시용 데이터처럼 원본에서 일부만 쓰면 Pick, Omit, Partial을 쓴다.

Utility Types
generic

데이터 타입이 바뀜

리스트, 테이블, 셀 렌더러처럼 입력 타입과 콜백 타입이 함께 움직이면 제네릭이 맞다.

<T> contract
runtime

외부 값 검증

API 응답, 라우터 상태, 파일 입력처럼 런타임 값은 타입 가드로 좁힌 뒤 렌더링한다.

type guard
config

설정 리터럴 보존

라우트와 권한 맵은 구조 검증과 자동완성을 동시에 얻도록 as const와 satisfies를 함께 둔다.

as const + satisfies