TypeScript
JavaScript per applicazioni scalabili
@MattiaManzati
React JS Day di Verona
Codice sconto del 10%
ItaliaJS16
JavaScript:
whats wrong?
- Il namespace globale può essere facilmente "sporcato"
- Le regole di coerce di "==" possono indurre in errore
- "this" può variare a seconda del binding della funzione
JavaScript:
whats wrong?
JavaScript:
whats wrong?
JavaScript:
whats wrong?
Essendo JavaScript un linguaggio ad oggetti,
non dispone di ereditarietà a classi, ma bensì prototipale.
Questo rende più complicato
per chi viene da linguaggi come Java o C#
comprendere come organizzare le gerarchie
o come creare metodi e membri privati
JavaScript:
whats good?
E' uno dei pochi linguaggi che soddisfa appieno il modello
"write once, run everywhere"
La crescita di richieste di web application
e la crescente richiesta di rapidità di esecuzione dell'applicativo
porta JavaScript ad essere l'unica soluzione
per il web application developement
Nasce quindi l'esigenza di nuovi linguaggi che utilizzino JavaScript come linguaggio di "assembly"
Un altro linguaggio?!
TypeScript estende la sintassi JavaScript
che milioni di developer già conoscono.
Quindi un file JavaScript è anche un file TypeScript valido!
Cos'è TypeScript?
TypeScript è un superset di JavaScript,
che compila verso JavaScript,
introducendo tipizzazione opzionale,
e supporto alle ultime features di JavaScript.
Cos'è TypeScript?
- è totalmente OpenSource
- compila verso ES3/ES5
- sviluppato e promosso da Microsoft
- compilatore scritto in TypeScript
- NodeJS come ambiente di build
Usa JavaScript di Domani, Oggi.
TypeScript permette di utilizzare alcune features ancora in fase di approvazione; traspilandole verso codice ES3/ES5.
Type System
Type System
Le annotazioni di tipo in TypeScript sono opzionali;
qualora non indicate, verrà assunto il tipo "any"
Dove possibile, la tipizzazione è inferred, ossia dedotta.
Type System
Il costo di adottare TypeScript è quindi minimo,
solitamente è sufficiente tipizzare i parametri di funzione,
TypeScript saprà dedurre da solo il resto.
Type System
Otteniamo quindi i benefici di un Type System,
quali ad esempio check della signature o type check.
Finalmente la nostra IDE ha coscienza del codice che scriviamo, e ci può aiutare!
Type System
Il Type System ci può aiutare a scovare bug nascosti!
Type System
Il Type System di TypeScript è structure-based;
il casting di una variabile verso un tipo non è necessario
Type System
il casting da un tipo a un altro è implicito;
a patto che i requisiti del tipo di destinazione siano soddisfatti!
Type System
Otteniamo inoltre i benifici di un linguaggio tipizzato:
Trova riferimenti, trova definizione e refactoring!
Type System
I programmatori Java e C# si troveranno più familiari con la programmazione ad oggetti; anche se check di accesso a membri privati viene effettuato solamente a compile time
Type System
Qualora tu non voglia, le dichiarazioni di tipo possono essere messe in un file di dichiarazione ".d.ts" e referenziate nel codice JS tramite un semplice commento.
DefinitelyTyped
Sull'onda di TypeScript, è nato in maniera indipendente e community based DefinitelyTyped, il repo con le tipizzazioni delle librerie JavaScript più famose
TypeScript Pro
- Supporto come Language Service per le IDE (e.g. VSCode)
- Possibilità di eseguire refactoring in maniera semplice e sicura
- Errori di battitura individuati in fase di compilazione
- Programmazione ad oggetti basata su classi, interfacce e elementi privati
- Supporto ai moduli (AMD, UMD, CommonJS)
TypeScript Pro
- Compatibilità con codice JavaScript esistente
- TypeScript compila verso JavaScript idiomatico
- qualsiasi codice JavaScript è anche TypeScript valido
- Basso rischio nel provare TypeScript
- Si può iniziare tipizzando un codebase esistente
- Si può tornare indietro usando il codice JS generato
TypeScript Cons
- Per ottenere il massimo da TypeScript, la maggior parte del codebase deve essere tipizzato
- Per poter eseguire la tua app nel browser, è necessario prima compilarla
- Nonostante la flessibilità del TypeSystem, alcune funzioni (e.g. currying) sono difficili da tipizzare; all'uscita di TypeScript 2.0 quasi tutte queste situazioni verranno risolte
- Le tipizzazioni DefinitelyTyped posson essere arretrate
TypeScript Sì o No?
a mio avviso, Sì.
Thanks!
@MattiaManzati
Pro e Cons di TypeScript: il JavaScript tipizzato per app scalabili
By mattiamanzati
Pro e Cons di TypeScript: il JavaScript tipizzato per app scalabili
Pro e Cons di TypeScript: il JavaScript tipizzato per app scalabili
- 1,290