- 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 által fordított szöveg.
A bejegyzés durumis AI által generált összefoglalója
- A TypeScriptben a típusok manuális beírása csökkentheti az olvashatóságot, míg a magasabb rendű típusok használata tisztább definíciókat eredményezhet.
- A hotscript könyvtár segítségével a magasabb rendű típusokon alapuló típusdefiníciókat tömören kezelhetjük.
- Különböző funkciókat kínáló hotscript könyvtár használatát javasoljuk a kód olvashatóságának javítása és a szükség szerinti felhasználás érdekében.
Vegyünk egy példakódot.
Ez egy olyan kód, amely minden szó első betűjét nagybetűssé alakítja.
const firstLetterUpperCase = (str : string) => { return str.split(" ").map(v => ${v.charAt(0).toUpperCase()}${v.slice(1)}).join(" "); } console.log(firstLetterUpperCase("hello world"));
Egyszerű, de a visszatérési típus string lesz, és a típuskövetkeztetés nem lehetséges.
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"));
Természetesen, a típusokat egyenként beírhatjuk, mint fent.
De a fenti típus nem túl olvasható. A beágyazott feltételes operátorok és a rekurzív szerkezet okozza a problémát.
De meglepő módon a TypeScript támogatja a magasabb rendű típusokat.
És van egy magasabb rendű típusokból álló könyvtár, amely ezekre épül.
Ezt a könyvtárat használva a típusdefiníciókat áttekinthetőbbé tehetjük.
type FirstLetterUppercase2= Pipe< T, [ Strings.Split<" ">, Tuples.Map<Strings.Capitalize>, Tuples.Join<" "> ] >; type A = FirstLetterUppercase2<"hello world">; // ^? type = "Hello World"
Ez a kóditt található.
Így a magasabb rendű típusok segítségével a típusokat áttekinthetőbbé tehetjük.
Ezenkívül számos más funkció is rendelkezésre áll, érdemes megnézni a weboldalt, és szükség esetén használni.