Capitolo 6. Tipi avanzati
Questo lavoro è stato tradotto utilizzando l'AI. Siamo lieti di ricevere il tuo feedback e i tuoi commenti: translation-feedback@oreilly.com
Typescript ha un sistema di tipi di prima classe che supporta potenti funzioni di programmazione a livello di tipo che potrebbero far invidia anche al più ostico programmatore Haskell. Come ormai saprai, questo sistema di tipi non è solo incredibilmente espressivo, ma anche facile da usare e rende la dichiarazione dei vincoli e delle relazioni tra tipi semplice, concisa e, nella maggior parte dei casi, inferita.
Abbiamo bisogno di un sistema di tipi così espressivo e insolito perché JavaScript è così dinamico. Modellare cose come prototipi, this delimitato dinamicamente, sovraccarichi di funzioni e oggetti in continua evoluzione richiede un sistema di tipi ricco e una cintura di operatori di tipo che farebbe fare un doppio salto a Batman.
Inizierò questo capitolo con un'immersione profonda nella sottotipizzazione, nell'assegnabilità, nella varianza e nell'ampliamento in Typescript, dando maggiore definizione alle intuizioni che hai sviluppato negli ultimi capitoli. In seguito tratterò in modo più dettagliato le funzioni di typechecking di TypeScript basate sul flusso di controllo, tra cui il refinement e la totalità, e continuerò con alcune funzioni avanzate di programmazione a livello di tipo: la digitazione e la mappatura dei tipi di oggetto, l'uso dei tipi condizionali, la definizione delle tue guardie di tipo ...