Introduzione a typescript

Slides:



Advertisements
Presentazioni simili
Active Server Pages ed ADO. Scrivere ASP Le pagine ASP possono contenere codice HTML o XML Le parti del documento che racchiudono codice script vanno.
Advertisements

Shell: variabili di sistema PATH HOME USER PWD SHELL HOSTNAME HOSTTYPE Per visualizzare il valore di tutte le variabili dambiente si usa il comando set.
JavaScript 6. Oggetti e JavaScript. Linguaggio ad oggetti JavaScript è un linguaggio orientato agli oggetti In JavaScript sono presenti oggetti predefiniti.
Applet Java.
Corrado Cavalli Microsoft .NET MVP
ASP .NET & Web Service: Introduzione
Visual Studio Tools For Office 2005 Fabio Santini. NET Senior Developer Evangelist Microsoft Italy.
Crea il tuo sito con Web Matrix e il Web Hosting su ASP.NET
Consumare Web Service Andrea Saltarello
I linguaggi di programmazione
INTERNET : ARPA sviluppa ARPANET (rete di computer per scopi militari)
IL LINGUAGGIO HTML Il linguaggio html. Il linguaggio html. Utilizzo dei tag. Utilizzo dei tag. Script Browser I link I link Caricamento dei dati sul server.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Università degli Studi di Modena e Reggio Emilia
Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Active Server Pages.
JavaScript Laboratorio di Applicazioni Informatiche II mod. A.
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Introduzione al linguaggio Java
Basi di Dati II Sara Romano
Overriding.
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
Corso di Informatica A.A
Introduzione a AJAX - Asynchronous Javascript And Xml
APPLICAZIONI WEB In questo corso impareremo a scrivere un'applicazione web (WA) Marco Barbato - Corso di Applicazioni Web – A.A
Università degli Studi di Modena e Reggio Emilia Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Utilizzo di ASP.NET.
Introduzione ad ASP.net
Corso di PHP.
C# LE BASI 2007 Prima lezione - Introduzione.
SVILUPPO MODERNO DI APPLICAZIONI PER WINDOWS
Fare clic per modificare lo stile del titolo Fare clic per modificare stili del testo dello schema – Secondo livello Terzo livello – Quarto livello » Quinto.
Javascript: fondamenti, concetti, modello a oggetti
LOD V IZ Progetto di semestre Omar Davide Molteni Stefano Mondini V ISUALIZZATORE DI O PEN D ATA.
Tecnologie Web Studente : Francesco Guerriero Matricola Docente : Montella Raffaele iUI : Interface Framework utente Per lo sviluppo.
Fare clic per modificare lo stile del titolo Fare clic per modificare stili del testo dello schema – Secondo livello Terzo livello – Quarto livello » Quinto.
Interazione di JavaScript e HTML
Introduzione a XI Conferenza nazionale di Statistica febbraio 2013 Pillole formative di statistica.
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
JavaScript Distribuire il calcolo Prof. Andrea Omicini Corso di Sistemi Distribuiti A.A. 2001/2002 Parte IV.
Sviluppo Web Agile con Castle MonoRail Diego Guidi DotNetMarche.Start() 12 ottobre 2006.
ASP.NET per il client web Alessandro Forte Audaces.NET iuvat (.NET aiuta gli audaci )
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
Amministrazione della rete: web server Apache
ASP – Active Server Pages - 1 -Giuseppe De Pietro Introduzione ASP, acronimo di Active Server Pages, sta ad indicare una tecnologia per lo sviluppo di.
ASP – Active Server Pages Introduzione Pagine Web Statiche & Dinamiche(ASP)
JavaScript Programmare il client. Cenni storici Alice Pavarani2  Nasce nel 1995 (Netscape): da LiveScript a JavaScript  La risposta di Microsoft: Jscript.
INTRODUZIONE A JAVASCRIPT
PHP - PHP: Hypertext Preprocessor. Introduzione PHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor") è un linguaggio di scripting general-purpose.
Corso di WebMaster Mercoledì 14 Novembre. Parte I – Introduzione al Corso Lezione 1: Presentazione Descrizione Breve del Corso Semplice Valutazione.
Lezione 8.
programmazione ad oggetti
Relatore Prof. Marco Porta Correlatore Prof. Luca Lombardi
JQuery Utilizzo, animazioni, plugin e parallax scrolling
JavaScript Generalità Cos'è JavaScript?
Pietro Brambati Developer Evangelist, Microsoft Blogs.msdn.com/pietrobr Internet Explorer 8 Per sviluppatori AJAX.
Fabrizio Felici LAMP workshop GROsseto Linux Users Group.
Internet e HTML Diffusione di informazioni mediante la rete Internet.
Introduzione a Javascript
Eprogram informatica V anno. ASP.NET Introduzione ASP.NET (Active Server Page) è il linguaggio che, sfruttando la tecnologia.NET, permette di: -scrivere.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Google Visualization API
Evitare gli errori (o almeno provarci) Roberto Bruni e Daniela Giorgetti.
Eprogram informatica V anno.
PHP.  HTML (Hyper Text Markup Language)  CSS (Cascading Style Sheets)  Javascript (linguaggio di programmazione client)  PHP ( Hypertext Preprocessor.
.NET vNext e lo sviluppo web cross-platform
XVRC2 Emanuele Ruffaldi Giugno Tre esperimenti con S3D ► Estensioni del Linguaggio ► Pre-Compilatore ► Esecuzione dentro il Java L C J.
Eprogram informatica V anno. Programmare in rete.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Transcript della presentazione:

Introduzione a typescript Marco Assandri 21 marzo 2013

Agenda Negli anni scorsi … Problematiche e soluzioni esistenti TypeScript - presentazione generale Tools Tipizzazione Inferenza Classi Funzioni Ereditarietà Moduli Integrazione librerie esterne Debug Links

Negli anni scorsi … ASP.NET Web-Forms (2002) minore importanza al Javascript grazie ai controlli del framework tendenza a spostare il lavoro sul server 2004-2005 inizia la moda AJAX (tecnologia già presente in IE5) con ampio utilizzo in Gmail e Google Maps Microsoft rilascia controlli lato server anche per AJAX jQuery (Agosto 2006) Risolve molti problemi cross-browser e fornisce un’interfaccia comune Semplifica la programmazione lato client Firebug (2006 mi pare) => Developer Toolbar per Chrome e IE Favoriscono moltissimo lo sviluppo e il debug di JS, CSS e HTML Attivabili con F12

Negli anni scorsi … HTML 5 Windows RT e Node.js Ancora maggiore enfasi e strumenti per spostare il lavoro sul client Ecmascript 5 aggiunge nuove funzionalità a Javascript Possibilità di realizzare applicazioni web complesse e performanti http://www.cuttherope.ie/ Windows RT e Node.js Permettono di utilizzare Javascript lato server e per scrivere applicazioni per Windows Store

Problematiche Javascript manca di alcune strutture a cui siamo abituati con C# Tipizzazione Interfacce Classi Namespace Alcuni comportamenti del linguaggio sono diversi da quello che potremmo aspettarci in quanto sviluppatori .NET (this, assegnazione variabili, funzioni che rappresentano oggetti, closures, …) Risulta indubbiamente complesso gestire applicazioni di grandi dimensioni.

Soluzioni tentate Negli anni si sono sviluppate Best Practice per la strutturazione del codice Javascript che simulano le funzionalità mancanti Prototype pattern Module pattern Revealing module pattern Revealing prototype pattern Script # Permette la scrittura di codice in C# che viene compilato in Javascript Scarsa documentazione Difficoltà ad utilizzare librerie non supportate Coffee Script Necessità di imparare una nuova sintassi

TypeScript “TypeScript is a language for application-scale JavaScript development. TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. Any browser. Any host. Any OS. Open Source.” Definizione presa da http://www.typescriptlang.org/

TypeScript TypeScript aggiunge funzionalità a JavaScript possiamo prendere un codice Javascript esistente e inserirlo in un file TypeScript (.ts) e viene riconosciuto correttamente Sostanzialmente aggiunge la tipizzazione statica e il modello di programmazione ad oggetti class-based Le funzionalità aggiuntive sono implementate seguendo le specifiche ES6 Il codice viene compilato in JavaScript (ES3 o ES5) e il compilatore trasforma le funzionalità aggiuntive seguendo i pattern più comuni Il codice risulta più pulito, leggibile, con supporto di intellisense e errori a compile time

Tools Per provarlo http://www.typescriptlang.org/Playground/ Per sviluppare seriamente Visual Studio Update 1 ASP.NET and Web Tools 2012.2 (consigliato) Plugin per Visual Studio 2012 http://www.microsoft.com/en-us/download/details.aspx?id=34790 Web Essentials 2012 (consigliato) DEMO Altri (Sublime Text, EMACS, Vim, Node.js, …) Self hosting (typescript.js) Vedere Opzioni WE e differenze sviluppo con e senza Possibile compilare direttamente Typescript nel browser, ma non ha molto senso

Tipizzazione Javascript è un linguaggio senza tipizzazione statica => errori rilevati a runtime TypeScript permette la tipizzazione tramite una sintassi opzionale il : var a; // tipo any var b: number; // tipo number => Intellisense migliorato e errori a compile time Possibilità di usare tipi opzionali usando ? DEMO

Type inference Type inference: il compilatore riesce in molti casi a dedurre il tipo di variabile quando non viene dichiarato espressamente. Possibile il casting tramite <nometipo>

Classi È possibile creare classi con campi, proprietà, costruttori e funzioni class Car {     // Property (public by default)     engine: string;     // Constructor     // (accepts a value so you can initialize engine)     constructor(engine: string) {         this.engine = engine;     } }   var hondaAccord = new Car('V6');

Funzioni Arrow functions => : è un modo alternativo per definire le funzioni e risolve il problema dello scope del this Pianificato in ES6 var myFunc1 = function (h: number, w: number) {     return h * w; }; può essere scritto come var myFunc2 = (h: number, w: number) => h * w; Le seguenti sono equivalenti (x) => { return Math.sin(x); } (x) => Math.sin(x) x => { return Math.sin(x); } x => Math.sin(x)

Funzioni Le funzioni all’interno delle classi possono essere implementate come prototype o come istanze class Car {     engine: string;    stop: () => string;     constructor (engine: string) {         this.engine = engine;         this.stop = () => "Stopped " + this.engine;     }     start() {         return "Started " + this.engine;     } }

Ereditarietà TypeScript semplifica l’ereditarietà usando extends che permette l’accesso ai membri pubblici e al costruttore. Il costruttore può essere ridefinito e per chiamare il costruttore della classe base usiamo super class Auto {     engine: string;     constructor(engine: string) {         this.engine = engine;     } } class ManlyTruck extends Auto {     bigTires: bool;     constructor(engine: string, bigTires: bool) {         super(engine);     this.bigTires = bigTires;     }

Interfacce TypeScript permette di definire tipi complessi sotto forma di interfacce. interface ICar{     engine: string;     color: string; } class Car implements ICar {     constructor (public engine: string, public color: string) {     } } var toyotaCamry : ICar;

Moduli I moduli in TypeScript (paragonabili ai namespace in C#) permettono una migliore scrittura del codice favorendone il riuso, l’incapsulamento, lo separano dal global scope ed è supportato AMD e commonJS. I moduli possono essere interni o esterni (utili per AMD).

Moduli interni I moduli interni vengono creati tramite module Il contenuto del modulo vive in esso ed è esterno dal global scope I moduli possono essere nested. module Shapes {     class Rectangle {         constructor (             public height: number,             public width: number) {         }     }     // This works!     var rect1 = new Rectangle(10, 4); } // This won't!! var rect2 = Shapes._________

Moduli interni Per farlo funzionare si usa export module Shapes {     export class Rectangle {         constructor (             public height: number,             public width: number) {         }     } } // This works! var rect = Shapes.Rectangle(10, 4);

Moduli interni I moduli possono essere estesi anche su file separati. È possibile referenziare moduli su file diversi usando la sintassi /// <reference path="nomefile.ts" />

Moduli esterni Per facilitare la gestione delle dipendenze in progetti complessi si tende ad utilizzare AMD e require.js. TypeScript lo supporta tramite i moduli esterni. Invece della keyword module si scrive direttamente ogni modulo in un file separato e tramite import e export si mettono in relazione

Integrazione librerie Per utilizzare librerie esterne conviene utilizzare i definition files (estensione .d.ts) per sfruttare al meglio la tipizzazione e l’intellisense. I definition files disponibili possono essere scaricati da https://github.com/borisyankov/DefinitelyTyped In mancanza usare solo declare

Debugging Oltre a debuggare il javascript generato è possibile inserire breakpoint direttamente in TypeScript Passi da seguire: Visual Studio 2012 Abilitazione dei file di mapping su Web Essentials Utilizzo di Internet Explorer 9 o 10

Links http://www.typescriptlang.org/ http://www.johnpapa.net/typescriptpost1/