TypeScript
TypeScript è un linguaggio di programmazione open source sviluppato da Microsoft. Si tratta di un'estensione di JavaScript che basa le sue caratteristiche su ECMAScript 6; capo del progetto è Anders Hejlsberg.[2][3][4][5]
TypeScript linguaggio di programmazione | |
---|---|
![]() | |
Autore | Anders Hejlsberg, Microsoft |
Data di origine | 1º ottobre 2012 |
Ultima versione | 4.7.4 (17 giugno 2022)[1] |
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 | Apache 2.0 |
Sito web | www.typescriptlang.org/ |
Il linguaggio estende la sintassi di JavaScript in modo che qualunque programma 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 essere compilato in JavaScript per poter essere interpretato da qualunque web browser o app.[6]
Origini
modificaTypeScript nasce dal crescente bisogno di un linguaggio front-end per lo sviluppo di applicazioni 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.[7]
Caratteristiche
modificaTypeScript è un linguaggio che estende la struttura esistente di JavaScript aggiungendo o rendendo più flessibili e potenti varie sue caratteristiche:
- Firma dei metodi
- Classi
- Interfacce
- Moduli
- Operatore "=>" che permette di definire le funzioni anonime
- Tipi di dato (opzionali)
- Enumerazioni
- Mixin tra classi
Da un punto di vista semantico TypeScript è molto simile a JScript .NET, un'altra implementazione dello standard ECMA-262 di Microsoft.
Annotazione tipizzata
modificaTypeScript prevede un sistema di annotazione dei tipi, che consente di controllare i tipi durante la fase di compilazione. Questa caratteristica può essere ignorata se si vuole utilizzare la classica tipizzazione dinamica di JavaScript.
function add(left: number, right: number): number { return left + right; }
Le annotazioni disponibili per i tipi primitivi sono: number
, boolean
e string
. Debolmente o fortemente tipizzati, le strutture sono di tipo any
(qualunque).
Le annotazioni di tipo possono essere esportate in un file di dichiarazione (declarations file in inglese), per dare informazioni sui tipi a script TypeScript che usano librerie di supporto come, per esempio, Node.js e jQuery.
È possibile aggiungere annotazioni complesse all'inizializzazione di una variabile.
public structure: { name: string, age: number, salary: number, contact: string | number } = {
name: 'Mario',
age: 42,
salary: 1300,
contact: 2+'000'
}
Supporto per ECMAScript 6
modificaTypeScript aggiunge il supporto per le caratteristiche proposte nella versione Harmony di JavaScript[8] presenti nello standard ECMAScript 6.
I costrutti supportati sono:
- Classi (con ereditarietà)
- Moduli
- Sintassi per le funzioni anonime
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.
Classi
modificaTypeScript supporta le classi come definite nello standard ECMAScript 6, integrando il supporto per le annotazioni tipizzate.
class Person {
private age: number;
private salary: number;
constructor(private name: string, age: number, salary: number) {
this.age = age;
this.salary = salary;
}
toString(): string {
return `Name: ${this.name}, Age: (${this.age}), Salary: (${this.salary})`;
}
}
Cronologia delle versioni
modificaNumero della versione | Data di rilascio | 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, dichiarazioni let e const , stringhe di modello, tipo di guardie, di tipo alias
|
1.5 | 20 luglio 2015 | Moduli ES6, parola chiave namespace , supporto for..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 e await
|
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, never , parola chiave readonly , 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 intersezione keyof
|
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 per bind, call e apply |
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, modificatore di sola lettura per array, asserzioni const, controllo del tipo globale this
|
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 | Il 28 agosto 2019 | Generatori più rigidi, diffusione dell'array più accurata, migliore supporto Unicode per gli identificatori |
3.7 | Il 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 | Il 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. |
Note
modifica- ^ https://github.com/microsoft/TypeScript/releases/tag/v4.7.4
- ^ Microsoft takes the wraps off TypeScript, a superset of JavaScript | ZDNet
- ^ TypeScript: JavaScript Development at Application Scale - Somasegar's blog - Site Home - MSDN Blogs
- ^ Microsoft TypeScript: Can the father of C# save us from the tyranny of JavaScript? | ZDNet
- ^ Microsoft Augments Javascript for Large-scale Development CIO.com, su cio.com. URL consultato il 19 luglio 2013 (archiviato dall'url originale il 17 dicembre 2013).
- ^ Microsoft TypeScript: the JavaScript we need, or a solution looking for a problem? | Ars Technica
- ^ Anders Hejlsberg and Lars Bak: TypeScript, JavaScript, and Dart
- ^ features proposed
Altri progetti
modifica- Wikimedia Commons contiene immagini o altri file su TypeScript
Collegamenti esterni
modifica- (EN) Sito ufficiale, su typescriptlang.org.
- (EN) Opere riguardanti TypeScript, su Open Library, Internet Archive.
- Repository sorgenti di TypeScript, su github.com.
Controllo di autorità | LCCN (EN) sh2013001822 · J9U (EN, HE) 987007570557905171 |
---|