- 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
Dit is een door AI vertaalde tekst.
Samenvatting van de tekst door durumis AI
- Het handmatig typen van typen in TypeScript kan de leesbaarheid verminderen, terwijl het gebruik van hogere-orde typen voor een schonere definitie kan zorgen.
- Met de hotscript-bibliotheek kunt u typedefinities op basis van hogere-orde typen beknopt beheren.
- Het wordt aanbevolen om de hotscript-bibliotheek te gebruiken met zijn diverse functies om de leesbaarheid van de code te verbeteren en deze naar behoefte te gebruiken.
Laten we een codevoorbeeld bekijken.
Het is een code die de eerste letter van elk woord omzet naar hoofdletters.
const firstLetterUpperCase = (str : string) => { return str.split(" ").map(v => ${v.charAt(0).toUpperCase()}${v.slice(1)}).join(" "); } console.log(firstLetterUpperCase("hello world"));
Hoewel het eenvoudig is, resulteert dit in een string als returntype, waardoor type-inferentie onmogelijk wordt.
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"));
Natuurlijk kan het type op deze manier, stap voor stap, worden gedefinieerd.
Maar dit type is niet erg leesbaar. De geneste ternaire operator en de recursieve structuur zijn hier de oorzaak van.
Maar verrassend genoeg ondersteunt TypeScript hogere-orde types.
En er is een bibliotheek voor hogere-orde types die op deze hogere-orde types is gebaseerd.
Met deze bibliotheek kan de typedefinitie netjes worden opgeschoond.
type FirstLetterUppercase2= Pipe< T, [ Strings.Split<" ">, Tuples.Map<Strings.Capitalize>, Tuples.Join<" "> ] >; type A = FirstLetterUppercase2<"hello world">; // ^? type = "Hello World"
De code staat hier.
Op deze manier kunnen we de typedefinities leesbaarder maken met behulp van hogere-orde types.
Naast deze functie zijn er nog veel andere functies. Bezoek de website, bekijk de functies en gebruik ze indien nodig.