- 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 庫來提高程式碼可讀性,並根據需要使用它。
讓我們以一個程式碼範例來看看。
這段程式碼的功能是將每個單字的第一個字母轉換成大寫。
const firstLetterUpperCase = (str : string) => { return str.split(" ").map(v => ${v.charAt(0).toUpperCase()}${v.slice(1)}).join(" "); } console.log(firstLetterUpperCase("hello world"));
雖然很簡單,但這樣做會導致回傳類型變成 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"
這個程式碼在這裡。
像這樣,透過高階類型,我們可以讓類型定義更具可讀性。
此外,還有許多其他功能,建議您瀏覽一下網站,並在需要時使用。