- 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
Teks yang diterjemahkan oleh AI.
Ringkasan posting oleh durumis AI
- Menulis tipe secara manual di TypeScript dapat mengurangi tingkat keterbacaan, dan menggunakan tipe tingkat tinggi dapat membuatnya lebih rapi.
- Library hotscript dapat digunakan untuk mengelola definisi tipe secara ringkas berdasarkan tipe tingkat tinggi.
- Disarankan untuk menggunakan library hotscript yang menyediakan berbagai fungsi untuk meningkatkan keterbacaan kode dan memanfaatkannya sesuai kebutuhan.
Mari kita ambil satu contoh kode.
Kode untuk mengubah huruf pertama dari setiap kata menjadi UpperCase.
const firstLetterUpperCase = (str : string) => { return str.split(" ").map(v => ${v.charAt(0).toUpperCase()}${v.slice(1)}).join(" "); } console.log(firstLetterUpperCase("hello world"));
Sederhana, tetapi ini akan membuat return type menjadi string, dan inferensi tipe menjadi tidak mungkin.
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"));
Tentu saja, kita dapat melakukan ini dengan mengetik tipe satu per satu seperti di atas.
Namun, tipe seperti di atas terasa kurang mudah dibaca. Operator ternary yang bersarang dan struktur rekursif menjadi masalahnya.
Tetapi yang mengejutkan, TypeScript mendukung tipe tingkat tinggi.
Dan berdasarkan tipe tingkat tinggi tersebut, ada satu library tipe tingkat tinggi.
Kita dapat menggunakan library ini untuk membersihkan definisi tipe.
type FirstLetterUppercase2= Pipe< T, [ Strings.Split<" ">, Tuples.Map<Strings.Capitalize>, Tuples.Join<" "> ] >; type A = FirstLetterUppercase2<"hello world">; // ^? type = "Hello World"
Kode kodeada di sini.
Dengan tipe tingkat tinggi ini, kita dapat mengatur tipe dengan mudah dan mudah dibaca.
Selain itu, ada banyak fitur lain, jadi silakan kunjungi situs webnya dan lihat-lihat, dan gunakan saat Anda membutuhkannya.