TypeScript linguaggio di programmazione | |
---|---|
![]() | |
Autore | Anders Hejlsberg, Microsoft |
Data di origine | 1º ottobre 2012 |
Ultima versione | 5.8.2 (28 febbraio 2025) |
Utilizzo | General purpose |
Paradigmi | Multi-paradigma:scripting,orientato agli oggetti,strutturata,imperativa |
Tipizzazione | Media |
Estensioni comuni | ts e tsx |
Influenzato da | JavaScript,Java,C# |
Implementazione di riferimento | |
Sistema operativo | Windows,Linux,macOS |
Lingua | Multilingua |
Licenza | licenza Apache 2.0 |
Sito web | www.typescriptlang.org/ |
Modifica dati su Wikidata ·Manuale |
TypeScript è unlinguaggio di programmazioneopen source sviluppato daMicrosoft. Si tratta di un'estensione diJavaScript che basa le sue caratteristiche suECMAScript 6; capo del progetto èAnders Hejlsberg.[1][2][3][4]
Il linguaggio estende lasintassi di JavaScript in modo che qualunqueprogramma scritto in JavaScript sia anche in grado di funzionare con TypeScript senza nessuna modifica. È stato progettato per lo sviluppo di grandi applicazioni ed è destinato a esserecompilato in JavaScript per poter essereinterpretato da qualunqueweb browser oapp.[5]
TypeScript nasce dal crescente bisogno di un linguaggiofront-end per lo sviluppo diapplicazioni JavaScript su larga scala e dalla necessità di sicurezza e robustezza, sia da parte di sviluppatori interni a Microsoft sia da parte di clienti e sviluppatori indipendenti.[6]
Con l'aumento della complessità e delle dimensioni dei progetti web, JavaScript ha iniziato a mostrare limiti intrinseci in termini di scalabilità, sicurezza emanutenibilità del codice. Queste problematiche erano sentite sia dai team di sviluppo interni di Microsoft sia dallacomunità virtuale di sviluppatori esterni e clienti che richiedevano strumenti più solidi.
La mancanza di funzionalità avanzate, come il controllo statico dei tipi, la gestione degli errori e lamodularizzazione, rendeva difficoltoso il mantenimento e l'evoluzione dei grandicodebase JavaScript.
TypeScript è stato concepito per colmare questa lacuna, offrendo unsuperset di JavaScript che introduce caratteristiche tipiche dei linguaggi di programmazionefortemente tipizzati, garantendo un ambiente di sviluppo più sicuro e affidabile.
TypeScript è un linguaggio che estende la struttura esistente di JavaScript aggiungendo o rendendo più flessibili e potenti varie sue caratteristiche:
=>
che permette di definire lefunzioni anonimeDa un punto di vista semantico TypeScript è molto simile aJScript .NET, un'altra implementazione dellostandard ECMA-262 di Microsoft.
TypeScript prevede un sistema di annotazione dei tipi, che consente di controllare i tipi durante la fase dicompilazione. Questa caratteristica può essere ignorata se si vuole utilizzare la classicatipizzazione dinamica di JavaScript.
functionadd(left:number,right:number):number{returnleft+right;}
Le annotazioni disponibili per i tipi primitivi sono:number
,boolean
estring
.Debolmente o fortemente tipizzati, le strutture sono di tipoany
(qualunque).
Le annotazioni di tipo possono essere esportate in un file di dichiarazione (in inglesedeclarations file), per dare informazioni sui tipi a script TypeScript che usanolibrerie di supporto come, per esempio,Node.js ejQuery.
È possibile aggiungere annotazioni complesse all'inizializzazione di una variabile.
publicstructure:{name:string,age:number,salary:number,contact:string|number}={name:'Mario',age:42,salary:1300,contact:2+'000'}
TypeScript aggiunge il supporto per le caratteristiche proposte nella versioneHarmony di JavaScript[7] presenti nello standardECMAScript 6.
I costrutti supportati sono:
Ancora prima che lo standard venisse definito appieno, Microsoft aveva dichiarato di voler continuare a sviluppare le caratteristiche di TypeScript mantenendole allineate con lo standard proposto.
TypeScript supporta le classi come definite nello standard ECMAScript 6, integrando il supporto per le annotazioni tipizzate.
classPerson{privateage:number;privatesalary:number;constructor(privatename:string,age:number,salary:number){this.age=age;this.salary=salary;}toString():string{return`Name:${this.name}, Age: (${this.age}), Salary: (${this.salary})`;}}
Numero della versione | Data di pubblicazione | Cambiamenti significativi |
---|---|---|
0.8 | 1 ottobre 2012 | |
0.9 | 18 giugno 2013 | |
1.0 | 12 aprile 2014 | |
1.1 | 6 ottobre 2014 | miglioramenti delle prestazioni |
1.3 | 12 novembre 2014 | protected , tipi di tupla |
1.4 | 20 gennaio 2015 | tipi unione, dichiarazionilet econst , stringhe di modello, tipo di guardie, di tipo alias |
1.5 | 20 luglio 2015 | Moduli ES6, parola chiavenamespace , supportofor..of , decoratori |
1.6 | 16 settembre 2015 | Supporto JSX, tipi di intersezione, dichiarazioni di tipo locale, classi e metodi astratti, funzioni di protezione dei tipi definite dall'utente |
1.7 | 30 novembre 2015 | async eawait |
1.8 | 22 febbraio 2016 | vincoli generici, errori di analisi del flusso di controllo, tipi di stringhe letterali,allowJs |
2.0 | 22 settembre 2016 | Tipi consapevoli di null e undefined, analisi del tipo basata sul flusso di controllo, tipi di unione discriminati,async , parola chiavereadonly ,this |
2.1 | 8 novembre 2016 | keyof e tipi di ricerca, tipi mappati, diffusione e riposo di oggetti, |
2.2 | 22 febbraio 2017 | classi mix-in,object |
2.3 | 27 aprile 2017 | async , valori predefiniti dei parametri generici, opzione rigorosa |
2.4 | 27 giugno 2017 | espressioni di importazione dinamica, enumerazioni di stringhe, inferenza migliorata per i generici, controvarianza rigorosa per i parametri di callback |
2.5 | 31 agosto 2017 | variabili della clausola catch opzionali |
2.6 | 31 ottobre 2017 | tipi di funzioni rigorose |
2.7 | 31 gennaio 2018 | proprietà con nome costante, tuple di lunghezza fissa |
2.8 | 27 marzo 2018 | tipi condizionali, migliorati con i tipi di intersezionekeyof |
2.9 | 14 maggio 2018 | supporto per simboli e letterali numerici nei tipi di oggetti keyof e mappati |
3.0 | 30 luglio 2018 | riferimenti al progetto, estrazione e diffusione di elenchi di parametri con tuple |
3.1 | 27 settembre 2018 | tipi di tupla e array mappabili |
3.2 | 30 novembre 2018 | controlli più severi perbind ,call eapply |
3.3 | 31 gennaio 2019 | regole rilassate sui metodi dei tipi di unione, build incrementali per i progetti compositi |
3.4 | 29 marzo 2019 | build incrementali più veloci, inferenza del tipo da funzioni generiche, modificatorereadonly per array, asserzioniconst , controllo del tipo globalethis |
3.5 | 29 maggio 2019 | build incrementali più veloci, omissione del tipo di supporto, controlli delle proprietà in eccesso migliorati nei tipi di unione, controllo del tipo di unione più intelligente |
3.6 | 28 agosto 2019 | Generatori più rigidi, diffusione dell'array più accurata, migliore supporto Unicode per gli identificatori |
3.7 | 5 novembre 2019 | Concatenamento opzionale, coalescenza nullo |
3.8 | 20 febbraio 2020 | Importazioni ed esportazioni di solo tipo, campi privati ECMAScript, attesa di primo livello |
3.9 | 12 maggio 2020 | Miglioramenti nell'inferenza, miglioramenti della velocità |
4.0 | 20 agosto 2020 | Tipi di tupla variabili, elementi di tupla etichettati |
4.1 | 19 novembre 2020 | Tipi letterali modello, rimappatura chiave nei tipi mappati, tipi condizionali ricorsivi |
4.3 | 12 maggio 2021 | Tipi di scrittura separati sulle proprietà, miglioramenti al tipo stringa |
4.4 beta | 1 luglio 2021 | Analisi del flusso di controllo delle condizioni con alias |
4.4 | 26 agosto 2021 | Default tipo unknown per il catch degli errori. Tipi unione resi esattamente come scritti. Blocchi statici all'interno delle classi. |
Altri progetti
Controllo di autorità | LCCN(EN) sh2013001822 ·J9U(EN, HE) 987007570557905171 |
---|