Javascript è un linguaggio che, grazie alla sua flessibilità e disponibilità su tutte le piattaforme, sta sempre più prendendo il sopravvento, guadagnando spazio anche fuori del browser. Chi lo conosce sa che si tratta di un linguaggio completo, che può essere un potente alleato ma anche un temibile nemico. Di recente Microsoft ha presentato Typescript, un nuovo compilatore, che ha l*intento di fornire a Javascript i paradigmi classici della programmazione type-safe tipica dei linguaggi evoluti. Typescript è un superset di Javascript ma viene eseguito come Javascript, ma senza problemi
3. Typescript: Javascript senza problemi.
andrea boschin andrea@boschin.it – adam|factory
Javascript Today
Any Browser
Any Host
Any OS
4. Typescript: Javascript senza problemi.
andrea boschin andrea@boschin.it – adam|factory
Javascript Development
pro
• potente
• estensibile
• molte librerie
contro
• difficile
• poco manutenibile
• type unsafe
• oop incompleto
poco adatto ad applicazioni reali
5. Except where otherwise noted, this work is licensed under: http://creativecommon.org/licenses/by-nc-sa/3.0/
Typescript: Javascript senza problemi.
andrea boschin
• E' un superset tipizzato di Javascript
• E' Open Source!
• il compilatore stesso è scritto in Typescript
andrea@boschin.it – adam|factory
6. Except where otherwise noted, this work is licensed under: http://creativecommon.org/licenses/by-nc-sa/3.0/
Typescript: Javascript senza problemi.
andrea boschin
• starts with javascript
• tutto il codice javascript è anche codice typescript
• optional static types, classes and modules
• migliora leggibilità e manutenibilità del codice
• supporta sviluppo di applicazioni scalabili
• tutto il codice sparisce a runtime
• ends with javascript
• la compilazione genera Javascript
andrea@boschin.it – adam|factory
7. Except where otherwise noted, this work is licensed under: http://creativecommon.org/licenses/by-nc-sa/3.0/
Typescript: Javascript senza problemi.
andrea boschin
Any Browser!
Any Host!
Any OS!
andrea@boschin.it – adam|factory
8. Except where otherwise noted, this work is licensed under: http://creativecommon.org/licenses/by-nc-sa/3.0/
Typescript: Javascript senza problemi.
andrea boschin andrea@boschin.it – adam|factory
• allineato agli standard emergenti
• la sintassi è allineata con la proposta di Ecmascript 6.0
• output in Ecmascript 3.0/5.0
• è possibile scegliere l'outout mediante switch di compilazione
10. Except where otherwise noted, this work is licensed under: http://creativecommon.org/licenses/by-nc-sa/3.0/
DEMO
11. Except where otherwise noted, this work is licensed under: http://creativecommon.org/licenses/by-nc-sa/3.0/
Typescript: Javascript senza problemi.
andrea boschin andrea@boschin.it – adam|factory
• play
• http://typescriptlang.org/playground
• download & docs
• http://www.typescriptlang.org/
• plugin Visual Studio 2012
• http://www.microsoft.com/en-us/download/details.aspx?id=34790
• source code
• http://typescript.codeplex.com/
12. Typescript: Javascript senza problemi.
andrea boschin
Contact me:
Company: adam | factory
UG http://xedotnet.org XeDotNet (Venezia Mestre)
email andrea@boschin.it
twitter @aboschin
facebook http://www.facebook.com/thelittlegrove
blog http://blog.boschin.it
site http://xamlplayground.org
xbox codeblock68
andrea@boschin.it – adam|factory
Notas del editor
Ricordoancoraquelgiorno in cui, seduto al binario 3 dellastazione di mestre, leggevo un articolo di unarivistacheparlava di un nuovo linguaggio di Netscape, introdotto in IE3 da Microsoft: tale Javascript. Parlo di circa 15/17 annifaperciòcapireteilmiostupore a parlarequest’oggi di un argomentochemette le sue basisuunatecnologiavecchia di un paio di ere geologiche in termini informatici. Michiamo Andrea Boschin, sono Microsoft MVP, e devo dire che a partire da quelperiodo ho da sempreapprezzatoJavascript per la enormipossibilitàche mi ha dato di arricchirel’interfacciautente.
In effetti, da quei giorni in cui Javascript era poco più che una bella idea, che però già due giganti si contendevano, il linguaggio ha visto alti e bassi, determinati soprattutto dal fatto che è stato oggetto di interpretazioni e incompatibilità che ne hanno condizionato il successo nei primi anni e lo hanno relegato a un secondo piano, spesso in mano ai grafici che ai programmatori. Tuttavia, oggi, dopo tre standardizzazioni e un fallimento (4.0) Javascript sta vivendo una nuova giovinezza data non solo dalle indubbie capacità, ma soprattutto dal un fatto importante:
Javascript oggi è a tutti gli effetti l’unica tecnologia in grado di garantire il write-once run-everywhere di Javistica memoria.Tanto è vero che a fianco all’indiscutibile «Any Browser» e «Any OS» si sta affiancando anche «Any host» individuando con questo la possibilità di eseguire anche codice server-side (es: node.js)
Javascript è un linguaggio che nasconde una potenza ed espressività che pochi conoscono a fondo, ha delle capacità di estensibilità invidiabili e soprattutto ad oggi gode di un numero di librerie impressionante e in continua crescita.Purtroppo Javascript tutt’ora conserva un numero di problemi che devono essere tenuti in seria considerazione da chi si debba approcciare allo sviluppo. La sua potenza ed espressività nascondono una complessità notevole che spesso si trasforma in trucchi che rendono il codice poco manutenibile. Non dimentichiamo inoltre il suo modello di OOP basato su prototipi che omette dei concetti fondamentali quali il polimorfismo e l’incapsulamento.Infine, alla base di gran parte dei problemi il fatto che Javascript non dispone di un controllo statico dei tipi, che è vitale se si vuole evitare che il codice scoppi nel momento meno opportuno e cioè davanti al cliente. Su questa base Javascript è un linguaggio poco adatto allo sviluppo di applicazioni nel mondo reale a meno che non si dispongano di forze pressochè illimitate come «Google» o «Microsoft».
E’ sostanzialmente per questi motivi che Microsoft sta tuttora lavorando su un linguaggio nuovo che mantenga l’espressività di Javascript senza perdere i numerosi vantaggi.Typescript è il nome di questo linguaggio, di cui oggi vi volglio parlare, giunto alla versione 0.8.2. E’ un linguaggio che è un superset di javascript, il cui compilatore stesso è open source e sviluppato in Typescript. Tanto è vero che il compilatore è in grado di essere eseguito nel browser, ma dobbiamo considerare questa una pura curiosità perché, non c’è davvero alcuna necessità che questa compilazione avvenga all’interno del browser:
Vediamo di chiarire:Il primo assunto è ce qualunque codice Javascript è un sorgente Typescript perfettamente valido. Se prendete un codice esistente e lo passate al compilatore esso verrà digerito senza alcun errore.Typescript, in quanto superset vi consente di aggiungere a Javascript una serie di costrutti tipici della programmazione ad oggetti. Tipi, classi, moduli, interfacce. Tutto questo consente di scrivere codice molto manutenibile, riutilizzabile, etc..Una volta che il compilatore ha elaborato questo codice vi darà in output nuovamente del Javascript che può essere eseguito in qualunque host che supporti Javascript: => Any…Any…Any…