TypeScript: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Ho modificato l'ultima versione, la tipizzazione e la licenza. |
→Cronologia delle versioni: Aggiunto il template "Aggiornare" |
||
(20 versioni intermedie di 9 utenti non mostrate) | |||
Riga 1:
{{Linguaggio di programmazione
|nome = TypeScript
|didascalia =
|autore = [[Anders Hejlsberg]],<br />[[Microsoft]]
|data = 1
|versione = 4.3 (12 maggio 2021)▼
|utilizzo = [[General purpose]]
|paradigmi = [[Paradigma di programmazione|Multi-paradigma]]: [[Linguaggio di scripting|scripting]], [[Programmazione orientata agli oggetti|orientato agli oggetti]], [[Programmazione strutturata|strutturata]], [[Programmazione imperativa|imperativa]]
|tipizzazione = Media
|specifiche =
|influenzato_da = [[JavaScript]], [[Java (linguaggio di programmazione)|Java]], [[C Sharp|C#]]
|sistema_operativo = [[Windows]], [[Linux]], [[macOS]]
|lingua = Multilingua
}}
'''TypeScript''' è un [[linguaggio di programmazione]] [[open source]] sviluppato da [[Microsoft]]. Si tratta di un
Il linguaggio estende la [[Sintassi (informatica)|sintassi]] di JavaScript in modo che qualunque [[programma (informatica)|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 [[compilazione|
== Origini ==
TypeScript nasce dal crescente bisogno di un linguaggio [[front-end]] per lo sviluppo di [[applicazione (informatica)|applicazioni]]
</ref>
Con l'aumento della complessità e delle dimensioni dei progetti web, JavaScript ha iniziato a mostrare limiti intrinseci in termini di scalabilità, sicurezza e [[manutenibilità]] del codice. Queste problematiche erano sentite sia dai team di sviluppo interni di Microsoft sia dalla [[comunità 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 la [[Programmazione modulare|modularizzazione]], rendeva difficoltoso il mantenimento e l'evoluzione dei grandi ''[[codebase]]'' JavaScript.
TypeScript è stato concepito per colmare questa lacuna, offrendo un ''superset'' di JavaScript che introduce caratteristiche tipiche dei linguaggi di programmazione [[Tipizzazione forte|fortemente tipizzati]], garantendo un ambiente di sviluppo più sicuro e affidabile.
== Caratteristiche ==
Line 30 ⟶ 32:
* [[Interfaccia (informatica)|Interfacce]]
* [[Modulo (programmazione)|Moduli]]
* Operatore
* Tipi di dato (opzionali)
* Enumerazioni
* ''Mixin'' tra classi
Da un punto di vista semantico TypeScript è molto simile a [[JScript .NET]], un'altra implementazione dello [[Norma tecnica|standard]] ECMA-262 di Microsoft.
=== Annotazione tipizzata ===
TypeScript 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;▼
}▼
<syntaxhighlight lang="typescript" line="1" copy=1>
Le annotazioni disponibili per i tipi primitivi sono: <code>number</code>, <code>bool</code> e <code>string</code>. Debolmente o fortemente tipizzati, le strutture sono di tipo <code>any</code> (qualunque).▼
</syntaxhighlight>
▲Le annotazioni disponibili per i tipi primitivi sono:
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]].▼
=== Supporto per ECMAScript 6 ===▼
▲Le annotazioni di tipo possono essere esportate in un
TypeScript aggiunge il supporto per le caratteristiche proposte nella versione ''Harmony'' di JavaScript<ref> [https://web.archive.org/web/20130809152146/http://wiki.ecmascript.org/doku.php?id=harmony:proposals features proposed]</ref> presenti nello standard ECMAScript 6.▼
È possibile aggiungere annotazioni complesse all'inizializzazione di una variabile.<syntaxhighlight lang="typescript" line="1" copy=1>
I costrutti supportati sono:▼
public structure: { name: string, age: number, salary: number, contact: string | number } = {
name: 'Mario',
age: 42,
salary: 1300,
contact: 2+'000'
}
</syntaxhighlight>
▲=== Supporto per ECMAScript 6 ===
▲TypeScript aggiunge il supporto per le caratteristiche proposte nella versione ''Harmony'' di JavaScript<ref>
▲I costrutti supportati sono:
* [[Classe (informatica)|Classi]] (con [[Ereditarietà (informatica)|ereditarietà]])
* Moduli
* Sintassi per le
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.
Line 60 ⟶ 73:
TypeScript supporta le classi come definite nello standard ECMAScript 6, integrando il supporto per le annotazioni tipizzate.
<syntaxhighlight lang="
class Person {
private age: number;
private salary: number;
constructor(private name: string, age: number, salary: number) {
this.age = age;
this.salary = salary;
Line 73 ⟶ 84:
toString(): string {
return `Name: ${this.name},
}
}
Line 79 ⟶ 90:
== Cronologia delle versioni ==
{{Aggiornare|argomento=informatica}}
{| class="wikitable sortable"
!Numero della versione
!Data di
!Cambiamenti significativi
|-
Line 102 ⟶ 114:
|1.3
|12 novembre 2014
|
|-
|1.4
|20 gennaio 2015
|tipi unione, dichiarazioni
|-
|1.5
|20 luglio 2015
|Moduli ES6, parola chiave <code>namespace</code>, supporto
|-
|1.6
Line 118 ⟶ 130:
|1.7
|30 novembre 2015
|{{Codice|codice=async|linguaggio=TypeScript}} e {{Codice|codice=await|linguaggio=TypeScript}}
|-
|1.8
Line 126 ⟶ 138:
|2.0
|22 settembre 2016
|Tipi consapevoli di null e undefined, analisi del tipo basata sul flusso di controllo, tipi di unione discriminati,
|-
|2.1
Line 138 ⟶ 150:
|2.3
|27 aprile 2017
|
|-
|2.4
Line 174 ⟶ 186:
|3.2
|30 novembre 2018
|controlli più severi per <code>bind</code>, <code>call</code> e <code>apply</code>
|-
|3.3
Line 182 ⟶ 194:
|3.4
|29 marzo 2019
|build incrementali più veloci, inferenza del tipo da funzioni generiche, modificatore
|-
|3.5
Line 189 ⟶ 201:
|-
|3.6
|
|Generatori più rigidi, diffusione dell'array più accurata, migliore supporto Unicode per gli identificatori
|-
|3.7
|
|Concatenamento opzionale, coalescenza nullo
|-
Line 205 ⟶ 217:
|-
|4.0
|
|Tipi di tupla variabili, elementi di tupla etichettati
|-
Line 211 ⟶ 223:
|19 novembre 2020
|Tipi letterali modello, rimappatura chiave nei tipi mappati, tipi condizionali ricorsivi
|-
|4.3
|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 ==
<references/>
== Altri progetti ==
{{interprogetto}}
== Collegamenti esterni ==
|