"타입 layer 의 string 연결. Mapped 타입과 결합, key 변환 빌드."
Template literal 타입
Template literal 타입이 runtime template literal 과 같은 backtick 문법 쓰지만, string-literal 타입에 작동. `Hello, ${string}` 가 'Hello, ' 로 시작하는 어떤 string 도 match 하는 타입. `${'a' | 'b'}-${1 | 2}` 가 `'a-1' | 'a-2' | 'b-1' | 'b-2'` 의 union.
이게 타입-레벨 string 조작. Compiler 가 타입 레벨에서 string literal 연결, pattern-match, union 가능 — 그리고 mapped 타입의 key remapping 과 결합, property 이름 체계적으로 변환 가능.
Built-in string utility 타입
TypeScript 가 case 조작용 4개 built-in ship:
Uppercase<S>Lowercase<S>Capitalize<S>— 첫 글자 대문자Uncapitalize<S>— 첫 글자 소문자
Template literal 과 결합, '이벤트 핸들러 이름' 같은 타입 빌드: `on${Capitalize<EventName>}` — `'click' | 'hover'` 같은 event 이름 union 에서 `'onClick' | 'onHover'` 얻음.
Template literal 타입이 빛나는 곳
고전 사용은 데이터 모양에서 method 이름 derive 하는 library API. React 의 `useState` setter 가 하나: `useUser` 이름의 hook 에서 setter 가 관례적으로 `setUser`. Template literal 타입이 library 저자가 이걸 타입으로 표현하게 해 — 그리고 compiler 가 관례 따르는지 검증.