- GitHub - gvergnaud/hotscript: A library of composable functions for the type-level! Transform your TypeScript types in any way you want using functions you already know.
- A library of composable functions for the type-level! Transform your TypeScript types in any way you want using functions you already know. - gvergnaud/hotscript
AI가 번역한 다른 언어 보기
durumis AI가 요약한 글
- TypeScript에서 타입을 직접 타이핑하는 것은 가독성이 떨어질 수 있으며, 고차 타입을 사용하면 더 깔끔하게 정의할 수 있다.
- hotscript 라이브러리를 활용하면 고차 타입을 기반으로 타입 정의를 간결하게 관리할 수 있다.
- 다양한 기능을 제공하는 hotscript 라이브러리를 활용하여 코드 가독성을 높이고 필요에 따라 활용하는 것을 추천한다.
예제로 하나의 코드를 가져와보겠습니다.
각 단어들의 첫 글자를 UpperCase로 변환하는 코드죠
const firstLetterUpperCase = (str : string) => { return str.split(" ").map(v => ${v.charAt(0).toUpperCase()}${v.slice(1)}).join(" "); } console.log(firstLetterUpperCase("hello world"));
간단하지만 이러면 return type이 string이 되버리고, 타입 추론이 불가능합니다.
type FirstLetterUppercase = T extends ${infer R}${infer RestWord} ${infer RestSentence} ? ${Uppercase<R>}${RestWord} ${FirstLetterUppercase<RestSentence>} : T extends ${infer R}${infer RestWord} ? ${Uppercase<R>}${RestWord} : never; const firstLetterUpperCase= (str : T) : FirstLetterUppercase => { return str.split(" ").map(v => ${v.charAt(0).toUpperCase()}${v.slice(1)}).join(" ") as FirstLetterUppercase ; } console.log(firstLetterUpperCase("hello world"));
물론 위와 같이 타입을 하나하나 타이핑하여 할 수 있습니다.
하지만 위와 같은 타입은 가독성이 안좋게 느껴집니다. 중첩된 삼항 연산자와 재귀 구조가 그 문제겠죠
하지만 놀랍게도 TypeScript는 고차타입을 지원합니다.
그리고 그 고차타입을 기반으로 고차타입 라이브러리가 하나 있죠
해당 라이브러리를 사용하여 타입 정의를 깔끔하게 정리 할 수 있습니다.
type FirstLetterUppercase2= Pipe< T, [ Strings.Split<" ">, Tuples.Map<Strings.Capitalize>, Tuples.Join<" "> ] >; type A = FirstLetterUppercase2<"hello world">; // ^? type = "Hello World"
해당 코드는 여기 있습니다.
이처럼 고차타입들을 통해 가독성 좋게 타입 정리를 할 수 있게 됐습니다.
이 외에도 다양한 기능들이 있으니 한번 사이트 들어가서 구경해보고, 필요하실 때 사용하는 것이 좋겠습니다.