SlideShare une entreprise Scribd logo
1  sur  20
WEB04
Da JavaScript a TypeScript
Roberto Messora
@robymes
robymes@gmail.com
robymes
Chi Sono
Software Engineer, ESRI & Azure Specialist
Divisione GIS
@
Consulenza di management e Information Technology sui temi
di Marketing,Vendite e Retailing
www.valuelab.it Business Partner
Topic take aways
• Focus: perchè TypeScript e perchè migrare/integrare una
soluzione JavaScript esistente a TypeScript
• Prerequisito: conoscenza basilare di TypeScript: sintassi,
costrutti
• Opzionale: per comprendere i concetti fondamentali, non è
necessario conoscere in dettaglio ogni strumento utilizzato nello
stack tecnologico delle demo (riferimenti in fondo alla presentazione)
• Goodies: Struttura real-world della soluzione demo
Nelle puntate precedenti
• CDays 2012: JavaScript avanzato: sfruttare al massimo il web
• CDays 2013: Usare Knockout.js
• CDays 2014: Single Page Applications: Come? Cosa? Perchè?
• CDays 2015: Code quality e test automatizzati con JavaScript
Disponibili sul sito dei Community Days: http://www.communitydays.it/events/
Follow me live
DEMO
http://github.com/robymes/cdays16
SLIDE
http://www.slideshare.net/RobertoMessora/da-javascript-a-typescript
Agenda
• Chi siamo, da dove veniamo, dove andiamo: JavaScript
• TypeScript vive e lotta con noi
• Pronti, partenza, JavaScript
• Mamma, devo integrare TypeScript
Chi siamo, da dove veniamo: JavaScript
"JavaScript (in 1996) had to 'look like Java' only less so, be Java’s
dumb kid brother or boy-hostage sidekick. Plus, I had to be done in
ten days or something worse than JS would have happened."
"JavaScript (nel 1996) doveva 'sembrare Java', solo un po' meno, essere il suo fratellino
imbranato o il suo partner inesperto. In più dovevo essere pronto in dieci giorni o sarebbe
accaduto qualcosa di peggio di JavaScript stesso."
Brendan Eich, ideatore di JavaScript - 2010
TypeScript vive e lotta con noi (dal 2012)
• Linguaggio e strumenti per sviluppare applicazioni complesse
che scalano in grandi team di sviluppo (“JavaScript that
scales”)
• https://www.typescriptlang.org/
• Installazione (ultima versione 2.0.3): npm install -g typescript
• Transpiling verso JavaScript: tsc helloworld.ts  helloworld.js
• Open source
• Inizia e finisce con JavaScript
• Supporta le ultime versioni di JavaScript ed anche alcune future
evoluzioni (async/await, decorators)
1 Ottobre 2012
Anders Hejlsberg
Introducing TypeScript
Channel 9
http://bit.ly/2dqJ3NN
DEMO
TypeScript ABC
“Ma io ho un’applicazione JavaScript”
• Bello TypeScript, ma la mia azienda ha investito tempo,
formazione, personale e denaro per sviluppare un’applicazione
in JavaScript
• Dobbiamo migrare l’intera codebase? No.
• Quanto costa? Il tempo di imparare il linguaggio.
• Ci vogliono nuove competenze? No (anzi…).
Stack tecnologico sviluppo JavaScript
• npm: Node.JS Package Manager
• package.json
• Bower: Repository di librerie di terze parti
• bower.json
• Gulp: Task manager
• gulpfile.js
Stack tecnologico sviluppo JavaScript
• Karma: Test runner
• karma.js
• Jasmine: Unit testing
• Eslint: Linter, code quality, code standards
• .eslintrc.json
DEMO
Pronti, partenza, JavaScript
Stack tecnologico sviluppo TypeScript
• npm, Bower, Gulp, Karma, Jasmine, Eslint
• tsc: Compilatore TypeScript
• tsconfig.json
• Tslint: Linter, code quality, code standards
• tslint.json
TypeScript Declaration File
• Scrittura manuale: generazione di un declaration file
per l’uso del JavaScript già sviluppato nel codice
TypeScript
• tsd: DefinetelyTyped (http://definitelytyped.org/),
repository github che raccoglie i declaration file delle
librerie JavaScript più usate
• tsd.json
DEMO
Mamma, devo integrare TypeScript
Riferimenti
• Node.JS - https://nodejs.org/
• Bower - https://bower.io/
• Gulp.JS - http://gulpjs.com/
• Karma - http://karma-runner.github.io/1.0/index.html
• Jasmine - http://jasmine.github.io/
• Eslint - http://eslint.org/
• TypeScript - https://www.typescriptlang.org/
• Tslint - https://palantir.github.io/tslint/
• DefinetelyTyped - http://definitelytyped.org/
Domande?
Materiale su
http://www.communitydays.it/

Contenu connexe

Tendances

La mia prima lezione di pozioni
La mia prima lezione di pozioniLa mia prima lezione di pozioni
La mia prima lezione di pozioniGianluca Padovani
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developerssparkfabrik
 
Roma linuxday 2013 - nodejs
Roma linuxday 2013 - nodejsRoma linuxday 2013 - nodejs
Roma linuxday 2013 - nodejsClaudio Mignanti
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il MobilePietro Libro
 
I linguaggi di programmazione e il mondo open-source
I linguaggi di programmazione e il mondo open-sourceI linguaggi di programmazione e il mondo open-source
I linguaggi di programmazione e il mondo open-sourceBergamo Linux Users Group
 
Progetto Linux va a scuola - Descrizione tecnica
Progetto Linux va a scuola - Descrizione tecnicaProgetto Linux va a scuola - Descrizione tecnica
Progetto Linux va a scuola - Descrizione tecnicaBergamo Linux Users Group
 
Iced tea, la macchina virtuale Java libera
Iced tea, la macchina virtuale Java liberaIced tea, la macchina virtuale Java libera
Iced tea, la macchina virtuale Java liberaVitalij Zadneprovskij
 
Applicazioni Serverless con AWS
Applicazioni Serverless con AWSApplicazioni Serverless con AWS
Applicazioni Serverless con AWSsparkfabrik
 
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Natale Vinto
 
Faccio cose. Vedo gente. Localizzo siti.
Faccio cose. Vedo gente. Localizzo siti.Faccio cose. Vedo gente. Localizzo siti.
Faccio cose. Vedo gente. Localizzo siti.Qabiria
 
Building infrastructure as code with typescript and aws cdk
Building infrastructure as code with typescript and aws cdkBuilding infrastructure as code with typescript and aws cdk
Building infrastructure as code with typescript and aws cdkAndrea Valentini
 

Tendances (20)

La mia prima lezione di pozioni
La mia prima lezione di pozioniLa mia prima lezione di pozioni
La mia prima lezione di pozioni
 
Introduzione a .Net Core
Introduzione a .Net CoreIntroduzione a .Net Core
Introduzione a .Net Core
 
Introduzione a Docker
Introduzione a DockerIntroduzione a Docker
Introduzione a Docker
 
node.js everywhere
node.js everywherenode.js everywhere
node.js everywhere
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developers
 
Roma linuxday 2013 - nodejs
Roma linuxday 2013 - nodejsRoma linuxday 2013 - nodejs
Roma linuxday 2013 - nodejs
 
.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile.NET Core, ASP.NET Core e Linux per il Mobile
.NET Core, ASP.NET Core e Linux per il Mobile
 
Docker & DevOps
Docker  & DevOpsDocker  & DevOps
Docker & DevOps
 
I linguaggi di programmazione e il mondo open-source
I linguaggi di programmazione e il mondo open-sourceI linguaggi di programmazione e il mondo open-source
I linguaggi di programmazione e il mondo open-source
 
Progetto Linux va a scuola - Descrizione tecnica
Progetto Linux va a scuola - Descrizione tecnicaProgetto Linux va a scuola - Descrizione tecnica
Progetto Linux va a scuola - Descrizione tecnica
 
Progetto Linux va a scuola
Progetto Linux va a scuolaProgetto Linux va a scuola
Progetto Linux va a scuola
 
Iced tea, la macchina virtuale Java libera
Iced tea, la macchina virtuale Java liberaIced tea, la macchina virtuale Java libera
Iced tea, la macchina virtuale Java libera
 
Introduzione a Docker
Introduzione a DockerIntroduzione a Docker
Introduzione a Docker
 
Applicazioni Serverless con AWS
Applicazioni Serverless con AWSApplicazioni Serverless con AWS
Applicazioni Serverless con AWS
 
VS Package @ CD2008
VS Package @ CD2008VS Package @ CD2008
VS Package @ CD2008
 
Docker
Docker Docker
Docker
 
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
 
Anatomia di un progetto open-source
Anatomia di un progetto open-sourceAnatomia di un progetto open-source
Anatomia di un progetto open-source
 
Faccio cose. Vedo gente. Localizzo siti.
Faccio cose. Vedo gente. Localizzo siti.Faccio cose. Vedo gente. Localizzo siti.
Faccio cose. Vedo gente. Localizzo siti.
 
Building infrastructure as code with typescript and aws cdk
Building infrastructure as code with typescript and aws cdkBuilding infrastructure as code with typescript and aws cdk
Building infrastructure as code with typescript and aws cdk
 

En vedette

Node.js: perche' tutto questo hype?
Node.js: perche' tutto questo hype?Node.js: perche' tutto questo hype?
Node.js: perche' tutto questo hype?Giancarlo Valente
 
Apache Cordova: Overview and Introduction
Apache Cordova: Overview and IntroductionApache Cordova: Overview and Introduction
Apache Cordova: Overview and IntroductionGabriele Falasca
 
V. liqviat 2009
V. liqviat 2009V. liqviat 2009
V. liqviat 2009nera24mx
 
Introduzione a node: cenni storici ecc
Introduzione a node: cenni storici eccIntroduzione a node: cenni storici ecc
Introduzione a node: cenni storici eccLuciano Colosio
 
Corso base di Tecnologie WEB - Primi passi in javascript
Corso base di Tecnologie WEB - Primi passi in javascriptCorso base di Tecnologie WEB - Primi passi in javascript
Corso base di Tecnologie WEB - Primi passi in javascriptStudiabo
 
node.js e Postgresql
node.js e Postgresqlnode.js e Postgresql
node.js e PostgresqlLucio Grenzi
 
Corso base di Tecnologie WEB - una visione d'insieme
Corso base di Tecnologie WEB - una visione d'insiemeCorso base di Tecnologie WEB - una visione d'insieme
Corso base di Tecnologie WEB - una visione d'insiemeStudiabo
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScriptGiovanni Buffa
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoGabriele Gaggi
 
Il Web orientato al futuro: Express, Angular e nodeJS
Il Web orientato al futuro: Express, Angular e nodeJS Il Web orientato al futuro: Express, Angular e nodeJS
Il Web orientato al futuro: Express, Angular e nodeJS Eugenio Minardi
 
Web base-03-js-numeri stringearray
Web base-03-js-numeri stringearrayWeb base-03-js-numeri stringearray
Web base-03-js-numeri stringearrayStudiabo
 
Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?Flavius-Florin Harabor
 
Angular2 가기전 Type script소개
 Angular2 가기전 Type script소개 Angular2 가기전 Type script소개
Angular2 가기전 Type script소개Dong Jun Kwon
 
Design for Developers: Introduction to Bootstrap 3
Design for Developers: Introduction to Bootstrap 3Design for Developers: Introduction to Bootstrap 3
Design for Developers: Introduction to Bootstrap 3John Bertucci
 
Titan: Scaling Graphs and TinkerPop3
Titan: Scaling Graphs and TinkerPop3Titan: Scaling Graphs and TinkerPop3
Titan: Scaling Graphs and TinkerPop3Matthias Broecheler
 
Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907NodejsFoundation
 
Introduction to Bootstrap
Introduction to BootstrapIntroduction to Bootstrap
Introduction to BootstrapRon Reiter
 

En vedette (20)

Aulas linux
Aulas linuxAulas linux
Aulas linux
 
Node.js: perche' tutto questo hype?
Node.js: perche' tutto questo hype?Node.js: perche' tutto questo hype?
Node.js: perche' tutto questo hype?
 
Apache Cordova: Overview and Introduction
Apache Cordova: Overview and IntroductionApache Cordova: Overview and Introduction
Apache Cordova: Overview and Introduction
 
V. liqviat 2009
V. liqviat 2009V. liqviat 2009
V. liqviat 2009
 
Introduzione a node: cenni storici ecc
Introduzione a node: cenni storici eccIntroduzione a node: cenni storici ecc
Introduzione a node: cenni storici ecc
 
Corso base di Tecnologie WEB - Primi passi in javascript
Corso base di Tecnologie WEB - Primi passi in javascriptCorso base di Tecnologie WEB - Primi passi in javascript
Corso base di Tecnologie WEB - Primi passi in javascript
 
node.js e Postgresql
node.js e Postgresqlnode.js e Postgresql
node.js e Postgresql
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuery
 
Corso base di Tecnologie WEB - una visione d'insieme
Corso base di Tecnologie WEB - una visione d'insiemeCorso base di Tecnologie WEB - una visione d'insieme
Corso base di Tecnologie WEB - una visione d'insieme
 
Introduzione a JavaScript
Introduzione a JavaScriptIntroduzione a JavaScript
Introduzione a JavaScript
 
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di MilanoWorkshop AngularJs, Cordova, Ionic - Politecnico di Milano
Workshop AngularJs, Cordova, Ionic - Politecnico di Milano
 
Il Web orientato al futuro: Express, Angular e nodeJS
Il Web orientato al futuro: Express, Angular e nodeJS Il Web orientato al futuro: Express, Angular e nodeJS
Il Web orientato al futuro: Express, Angular e nodeJS
 
Web base-03-js-numeri stringearray
Web base-03-js-numeri stringearrayWeb base-03-js-numeri stringearray
Web base-03-js-numeri stringearray
 
Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?Node js: che cos'è e a che cosa serve?
Node js: che cos'è e a che cosa serve?
 
Angular2 가기전 Type script소개
 Angular2 가기전 Type script소개 Angular2 가기전 Type script소개
Angular2 가기전 Type script소개
 
Design for Developers: Introduction to Bootstrap 3
Design for Developers: Introduction to Bootstrap 3Design for Developers: Introduction to Bootstrap 3
Design for Developers: Introduction to Bootstrap 3
 
TypeScript - An Introduction
TypeScript - An IntroductionTypeScript - An Introduction
TypeScript - An Introduction
 
Titan: Scaling Graphs and TinkerPop3
Titan: Scaling Graphs and TinkerPop3Titan: Scaling Graphs and TinkerPop3
Titan: Scaling Graphs and TinkerPop3
 
Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907
 
Introduction to Bootstrap
Introduction to BootstrapIntroduction to Bootstrap
Introduction to Bootstrap
 

Similaire à Da JavaScript a TypeScript

TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDDotNetCampus
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campusDotNetCampus
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatoreSMAU
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Codemotion
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
 
Come contribuire al processo di cambiamento. La comunità di developers.italia...
Come contribuire al processo di cambiamento. La comunità di developers.italia...Come contribuire al processo di cambiamento. La comunità di developers.italia...
Come contribuire al processo di cambiamento. La comunità di developers.italia...Team per la Trasformazione Digitale
 
Praticamente... AWS - Amazon Web Services
Praticamente... AWS - Amazon Web ServicesPraticamente... AWS - Amazon Web Services
Praticamente... AWS - Amazon Web ServicesSpeck&Tech
 
Cloud & No-Coding: come fare su Azure?
Cloud & No-Coding: come fare su Azure?Cloud & No-Coding: come fare su Azure?
Cloud & No-Coding: come fare su Azure?Andrea Carratta
 
Pensiero Analogico e Microservizi
Pensiero Analogico  e MicroserviziPensiero Analogico  e Microservizi
Pensiero Analogico e MicroserviziConsulthinkspa
 
Introduzione alla localizzazione web
Introduzione alla localizzazione webIntroduzione alla localizzazione web
Introduzione alla localizzazione webQabiria
 
Code quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScriptCode quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScriptRoberto Messora
 
IAMdev @ TECH JOBS fair 2018 Pisa
IAMdev @ TECH JOBS fair 2018 PisaIAMdev @ TECH JOBS fair 2018 Pisa
IAMdev @ TECH JOBS fair 2018 PisaTECH JOBS fair
 
Sviluppo di applicazioni web in ambito mobile
Sviluppo di applicazioni web in ambito mobileSviluppo di applicazioni web in ambito mobile
Sviluppo di applicazioni web in ambito mobileRoberto Cappelletti
 
Presentazione convenzione mongo db_crui gennaio 2020
Presentazione convenzione mongo db_crui gennaio 2020Presentazione convenzione mongo db_crui gennaio 2020
Presentazione convenzione mongo db_crui gennaio 2020Fondazione CRUI
 

Similaire à Da JavaScript a TypeScript (20)

TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatore
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Azure dev ops meetup one
Azure dev ops meetup oneAzure dev ops meetup one
Azure dev ops meetup one
 
Come contribuire al processo di cambiamento. La comunità di developers.italia...
Come contribuire al processo di cambiamento. La comunità di developers.italia...Come contribuire al processo di cambiamento. La comunità di developers.italia...
Come contribuire al processo di cambiamento. La comunità di developers.italia...
 
Praticamente... AWS - Amazon Web Services
Praticamente... AWS - Amazon Web ServicesPraticamente... AWS - Amazon Web Services
Praticamente... AWS - Amazon Web Services
 
Cloud & No-Coding: come fare su Azure?
Cloud & No-Coding: come fare su Azure?Cloud & No-Coding: come fare su Azure?
Cloud & No-Coding: come fare su Azure?
 
Game matching with SignalR
Game matching with SignalRGame matching with SignalR
Game matching with SignalR
 
Game matching with SignalR
Game matching with SignalRGame matching with SignalR
Game matching with SignalR
 
Tesi8
Tesi8Tesi8
Tesi8
 
Pensiero Analogico e Microservizi
Pensiero Analogico  e MicroserviziPensiero Analogico  e Microservizi
Pensiero Analogico e Microservizi
 
Introduzione alla localizzazione web
Introduzione alla localizzazione webIntroduzione alla localizzazione web
Introduzione alla localizzazione web
 
Code quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScriptCode quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScript
 
IAMdev @ TECH JOBS fair 2018 Pisa
IAMdev @ TECH JOBS fair 2018 PisaIAMdev @ TECH JOBS fair 2018 Pisa
IAMdev @ TECH JOBS fair 2018 Pisa
 
Containerized Liferay
Containerized LiferayContainerized Liferay
Containerized Liferay
 
Java&Solidarieta
Java&SolidarietaJava&Solidarieta
Java&Solidarieta
 
Sviluppo di applicazioni web in ambito mobile
Sviluppo di applicazioni web in ambito mobileSviluppo di applicazioni web in ambito mobile
Sviluppo di applicazioni web in ambito mobile
 
Presentazione convenzione mongo db_crui gennaio 2020
Presentazione convenzione mongo db_crui gennaio 2020Presentazione convenzione mongo db_crui gennaio 2020
Presentazione convenzione mongo db_crui gennaio 2020
 

Plus de Roberto Messora

Azure Synapse: data lake & modern data warehouse dalla A alla Z
Azure Synapse: data lake &  modern data warehouse dalla A alla ZAzure Synapse: data lake &  modern data warehouse dalla A alla Z
Azure Synapse: data lake & modern data warehouse dalla A alla ZRoberto Messora
 
Azure Data Factory: l'evoluzione della specie della data integration
Azure Data Factory: l'evoluzione della specie della data integrationAzure Data Factory: l'evoluzione della specie della data integration
Azure Data Factory: l'evoluzione della specie della data integrationRoberto Messora
 
Docker as a hosting target
Docker as a hosting targetDocker as a hosting target
Docker as a hosting targetRoberto Messora
 
Da imperativo a reattivo: Bacon.JS
Da imperativo a reattivo: Bacon.JSDa imperativo a reattivo: Bacon.JS
Da imperativo a reattivo: Bacon.JSRoberto Messora
 
Event streaming pipeline with Windows Azure and ArcGIS Geoevent extension
Event streaming pipeline with Windows Azure and ArcGIS Geoevent extensionEvent streaming pipeline with Windows Azure and ArcGIS Geoevent extension
Event streaming pipeline with Windows Azure and ArcGIS Geoevent extensionRoberto Messora
 
Single Page web Application
Single Page web ApplicationSingle Page web Application
Single Page web ApplicationRoberto Messora
 
Javascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il webJavascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il webRoberto Messora
 
Self-adaptive geospatial web applications
Self-adaptive geospatial web applicationsSelf-adaptive geospatial web applications
Self-adaptive geospatial web applicationsRoberto Messora
 
Web technologies and patterns in HTML5 mapping
Web technologies and patterns in HTML5 mappingWeb technologies and patterns in HTML5 mapping
Web technologies and patterns in HTML5 mappingRoberto Messora
 
MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!Roberto Messora
 

Plus de Roberto Messora (13)

Azure Synapse: data lake & modern data warehouse dalla A alla Z
Azure Synapse: data lake &  modern data warehouse dalla A alla ZAzure Synapse: data lake &  modern data warehouse dalla A alla Z
Azure Synapse: data lake & modern data warehouse dalla A alla Z
 
Azure Data Factory: l'evoluzione della specie della data integration
Azure Data Factory: l'evoluzione della specie della data integrationAzure Data Factory: l'evoluzione della specie della data integration
Azure Data Factory: l'evoluzione della specie della data integration
 
Seminario Big Data
Seminario Big DataSeminario Big Data
Seminario Big Data
 
Docker as a hosting target
Docker as a hosting targetDocker as a hosting target
Docker as a hosting target
 
Da imperativo a reattivo: Bacon.JS
Da imperativo a reattivo: Bacon.JSDa imperativo a reattivo: Bacon.JS
Da imperativo a reattivo: Bacon.JS
 
Event streaming pipeline with Windows Azure and ArcGIS Geoevent extension
Event streaming pipeline with Windows Azure and ArcGIS Geoevent extensionEvent streaming pipeline with Windows Azure and ArcGIS Geoevent extension
Event streaming pipeline with Windows Azure and ArcGIS Geoevent extension
 
Javascript Unit Testing
Javascript Unit TestingJavascript Unit Testing
Javascript Unit Testing
 
Single Page web Application
Single Page web ApplicationSingle Page web Application
Single Page web Application
 
Javascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il webJavascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il web
 
Self-adaptive geospatial web applications
Self-adaptive geospatial web applicationsSelf-adaptive geospatial web applications
Self-adaptive geospatial web applications
 
Web technologies and patterns in HTML5 mapping
Web technologies and patterns in HTML5 mappingWeb technologies and patterns in HTML5 mapping
Web technologies and patterns in HTML5 mapping
 
Usare Knockout JS
Usare Knockout JSUsare Knockout JS
Usare Knockout JS
 
MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!
 

Da JavaScript a TypeScript

  • 1.
  • 2. WEB04 Da JavaScript a TypeScript Roberto Messora @robymes robymes@gmail.com robymes
  • 3. Chi Sono Software Engineer, ESRI & Azure Specialist Divisione GIS @ Consulenza di management e Information Technology sui temi di Marketing,Vendite e Retailing www.valuelab.it Business Partner
  • 4. Topic take aways • Focus: perchè TypeScript e perchè migrare/integrare una soluzione JavaScript esistente a TypeScript • Prerequisito: conoscenza basilare di TypeScript: sintassi, costrutti • Opzionale: per comprendere i concetti fondamentali, non è necessario conoscere in dettaglio ogni strumento utilizzato nello stack tecnologico delle demo (riferimenti in fondo alla presentazione) • Goodies: Struttura real-world della soluzione demo
  • 5. Nelle puntate precedenti • CDays 2012: JavaScript avanzato: sfruttare al massimo il web • CDays 2013: Usare Knockout.js • CDays 2014: Single Page Applications: Come? Cosa? Perchè? • CDays 2015: Code quality e test automatizzati con JavaScript Disponibili sul sito dei Community Days: http://www.communitydays.it/events/
  • 7. Agenda • Chi siamo, da dove veniamo, dove andiamo: JavaScript • TypeScript vive e lotta con noi • Pronti, partenza, JavaScript • Mamma, devo integrare TypeScript
  • 8. Chi siamo, da dove veniamo: JavaScript "JavaScript (in 1996) had to 'look like Java' only less so, be Java’s dumb kid brother or boy-hostage sidekick. Plus, I had to be done in ten days or something worse than JS would have happened." "JavaScript (nel 1996) doveva 'sembrare Java', solo un po' meno, essere il suo fratellino imbranato o il suo partner inesperto. In più dovevo essere pronto in dieci giorni o sarebbe accaduto qualcosa di peggio di JavaScript stesso." Brendan Eich, ideatore di JavaScript - 2010
  • 9. TypeScript vive e lotta con noi (dal 2012) • Linguaggio e strumenti per sviluppare applicazioni complesse che scalano in grandi team di sviluppo (“JavaScript that scales”) • https://www.typescriptlang.org/ • Installazione (ultima versione 2.0.3): npm install -g typescript • Transpiling verso JavaScript: tsc helloworld.ts  helloworld.js • Open source • Inizia e finisce con JavaScript • Supporta le ultime versioni di JavaScript ed anche alcune future evoluzioni (async/await, decorators)
  • 10. 1 Ottobre 2012 Anders Hejlsberg Introducing TypeScript Channel 9 http://bit.ly/2dqJ3NN
  • 12. “Ma io ho un’applicazione JavaScript” • Bello TypeScript, ma la mia azienda ha investito tempo, formazione, personale e denaro per sviluppare un’applicazione in JavaScript • Dobbiamo migrare l’intera codebase? No. • Quanto costa? Il tempo di imparare il linguaggio. • Ci vogliono nuove competenze? No (anzi…).
  • 13. Stack tecnologico sviluppo JavaScript • npm: Node.JS Package Manager • package.json • Bower: Repository di librerie di terze parti • bower.json • Gulp: Task manager • gulpfile.js
  • 14. Stack tecnologico sviluppo JavaScript • Karma: Test runner • karma.js • Jasmine: Unit testing • Eslint: Linter, code quality, code standards • .eslintrc.json
  • 16. Stack tecnologico sviluppo TypeScript • npm, Bower, Gulp, Karma, Jasmine, Eslint • tsc: Compilatore TypeScript • tsconfig.json • Tslint: Linter, code quality, code standards • tslint.json
  • 17. TypeScript Declaration File • Scrittura manuale: generazione di un declaration file per l’uso del JavaScript già sviluppato nel codice TypeScript • tsd: DefinetelyTyped (http://definitelytyped.org/), repository github che raccoglie i declaration file delle librerie JavaScript più usate • tsd.json
  • 19. Riferimenti • Node.JS - https://nodejs.org/ • Bower - https://bower.io/ • Gulp.JS - http://gulpjs.com/ • Karma - http://karma-runner.github.io/1.0/index.html • Jasmine - http://jasmine.github.io/ • Eslint - http://eslint.org/ • TypeScript - https://www.typescriptlang.org/ • Tslint - https://palantir.github.io/tslint/ • DefinetelyTyped - http://definitelytyped.org/