"값 썼어. 이제 그 타입 무료로 가져."
타입-레벨 `typeof`
타입 위치에서 typeof someValue 가 `someValue` 의 타입으로 평가. const u = { id: 1, name: 'Pippa' }; type U = typeof u — `U` 가 `{ id: number; name: string }`. Compiler 가 값의 추론 타입 읽고 그 모양의 타입 줘.
이건 runtime `typeof` operator (runtime 에 문자열 반환) 와 별개. 타입-레벨 버전은 타입 위치에만 존재, 타입과 값 sync 유지하는 TypeScript 의 가장 유용한 기능 중 하나.
손 뻗을 때
상수 → 타입. 상수 있고 같은 모양을 타입으로 표현하고 싶으면, `typeof constant` 가 re-type 없이 해. const ROUTES = { CHAT: '/chat' } as const; type Routes = typeof ROUTES.
함수 → signature. `ReturnType` 과 `Parameters` 와 결합, 이름 붙이지 않고 함수 조각 추출 가능. type Result = ReturnType<typeof fetchUser>.
External library. Library 가 값 export 하지만 타입은 안 export 하면, `typeof exportedValue` 가 타입 회복.
타입-레벨 `typeof` 가 값을 진실 source 로, 타입을 derived view 로 만드는 법. 값이 도는 거; 타입이 compiler 가 체크하는 거. 둘 다 한 선언에서.