- 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
Testo tradotto dall'IA.
Riepilogo del post generato dall'IA di durumis
- La digitazione manuale dei tipi in TypeScript può rendere il codice meno leggibile, mentre l'utilizzo di tipi di ordine superiore consente di definire i tipi in modo più pulito.
- La libreria hotscript consente di gestire le definizioni dei tipi in modo conciso basandosi su tipi di ordine superiore.
- Si consiglia di utilizzare la libreria hotscript, che offre diverse funzionalità, per migliorare la leggibilità del codice e sfruttarne le potenzialità in base alle proprie esigenze.
Prendiamo un esempio di codice.
Un codice che converte la prima lettera di ogni parola in maiuscolo.
const firstLetterUpperCase = (str : string) => { return str.split(" ").map(v => ${v.charAt(0).toUpperCase()}${v.slice(1)}).join(" "); } console.log(firstLetterUpperCase("hello world"));
Sembra semplice, ma in questo modo il tipo di ritorno diventa string e l'inferenza di tipo diventa impossibile.
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"));
Certo, possiamo definire i tipi uno per uno come mostrato sopra.
Tuttavia, questo tipo di definizione non è molto leggibile. L'operatore ternario annidato e la struttura ricorsiva sono i problemi principali.
Ma sorprendentemente, TypeScript supporta i tipi di ordine superiore.
E sulla base di questi tipi di ordine superiore, esiste una libreria di tipi di ordine superiore.
Utilizzando questa libreria, possiamo riorganizzare la definizione del tipo in modo pulito.
type FirstLetterUppercase2= Pipe< T, [ Strings.Split<" ">, Tuples.Map<Strings.Capitalize>, Tuples.Join<" "> ] >; type A = FirstLetterUppercase2<"hello world">; // ^? type = "Hello World"
Il codiceè qui.
In questo modo, siamo in grado di organizzare i tipi in modo più leggibile grazie ai tipi di ordine superiore.
Ci sono altre funzionalità, quindi è consigliabile visitare il sito web, dare un'occhiata e utilizzarle quando necessario.