Quire
TypeScript linguaggio di programmazione
TypeScript linguaggio di programmazione
AutoreAnders Hejlsberg,
Microsoft
Data di origine1º ottobre 2012
Ultima versione7.0.2 (8 luglio 2026)
UtilizzoGeneral purpose
ParadigmiMulti-paradigma: scripting, orientato agli oggetti, strutturata, imperativa
TipizzazioneMedia
Estensioni comunits e tsx
Influenzato daJavaScript, Java, C#
Implementazione di riferimento
Sistema operativoWindows, Linux, macOS
LinguaMultilingua
Licenzalicenza Apache 2.0
Sito webwww.typescriptlang.org/

TypeScript è un linguaggio di programmazione open source sviluppato da Microsoft. Si tratta di un'estensione di JavaScript a cui aggiunge un controllo dei tipi statico. Il capo del progetto è Anders Hejlsberg.[1][2][3][4]

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.[5]

Origini#edit

TypeScript 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.[6]

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 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 fortemente tipizzati, garantendo un ambiente di sviluppo più sicuro e affidabile.

Caratteristiche#edit

TypeScript è un linguaggio che estende la struttura esistente di JavaScript aggiungendo o rendendo più flessibili e potenti varie sue caratteristiche:

Da un punto di vista semantico TypeScript è molto simile a JScript .NET, un'altra implementazione dello standard ECMA-262 di Microsoft.

Annotazione tipizzata#edit

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;
}

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 (in inglese declarations file), 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#edit

TypeScript aggiunge il supporto per le caratteristiche proposte nella versione Harmony di JavaScript[7] presenti nello standard ECMAScript 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.

Classi#edit

TypeScript 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#edit

Numero della versioneData di pubblicazioneCambiamenti significativi
0.81 ottobre 2012
0.918 giugno 2013
1.012 aprile 2014
1.16 ottobre 2014miglioramenti delle prestazioni
1.312 novembre 2014protected, tipi di tupla
1.420 gennaio 2015tipi unione, dichiarazioni let e const, stringhe di modello, tipo di guardie, di tipo alias
1.520 luglio 2015Moduli ES6, parola chiave namespace, supporto for..of, decoratori
1.616 settembre 2015Supporto JSX, tipi di intersezione, dichiarazioni di tipo locale, classi e metodi astratti, funzioni di protezione dei tipi definite dall'utente
1.730 novembre 2015async e await
1.822 febbraio 2016vincoli generici, errori di analisi del flusso di controllo, tipi di stringhe letterali, allowJs
2.022 settembre 2016Tipi consapevoli di null e undefined, analisi del tipo basata sul flusso di controllo, tipi di unione discriminati, async, parola chiave readonly, this
2.18 novembre 2016keyof e tipi di ricerca, tipi mappati, diffusione e riposo di oggetti,
2.222 febbraio 2017classi mix-in, object
2.327 aprile 2017async, valori predefiniti dei parametri generici, opzione rigorosa
2.427 giugno 2017espressioni di importazione dinamica, enumerazioni di stringhe, inferenza migliorata per i generici, controvarianza rigorosa per i parametri di callback
2.531 agosto 2017variabili della clausola catch opzionali
2.631 ottobre 2017tipi di funzioni rigorose
2.731 gennaio 2018proprietà con nome costante, tuple di lunghezza fissa
2.827 marzo 2018tipi condizionali, migliorati con i tipi di intersezione keyof
2.914 maggio 2018supporto per simboli e letterali numerici nei tipi di oggetti keyof e mappati
3.030 luglio 2018riferimenti al progetto, estrazione e diffusione di elenchi di parametri con tuple
3.127 settembre 2018tipi di tupla e array mappabili
3.230 novembre 2018controlli più severi per bind, call e apply
3.331 gennaio 2019regole rilassate sui metodi dei tipi di unione, build incrementali per i progetti compositi
3.429 marzo 2019build incrementali più veloci, inferenza del tipo da funzioni generiche, modificatore readonly per array, asserzioni const, controllo del tipo globale this
3.529 maggio 2019build 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.628 agosto 2019Generatori più rigidi, diffusione dell'array più accurata, migliore supporto Unicode per gli identificatori
3.75 novembre 2019Concatenamento opzionale, coalescenza nullo
3.820 febbraio 2020Importazioni ed esportazioni di solo tipo, campi privati ECMAScript, attesa di primo livello
3.912 maggio 2020Miglioramenti nell'inferenza, miglioramenti della velocità
4.020 agosto 2020Tipi di tupla variabili, elementi di tupla etichettati
4.119 novembre 2020Tipi letterali modello, rimappatura chiave nei tipi mappati, tipi condizionali ricorsivi
4.312 maggio 2021Tipi di scrittura separati sulle proprietà, miglioramenti al tipo stringa
4.4 beta1 luglio 2021Analisi del flusso di controllo delle condizioni con alias
4.426 agosto 2021Default tipo unknown per il catch degli errori. Tipi unione resi esattamente come scritti. Blocchi statici all'interno delle classi.

Note#edit

  1. ^ (EN) Microsoft takes the wraps off TypeScript, a superset of JavaScript, su ZDNET.
  2. ^ TypeScript: JavaScript Development at Application Scale - Somasegar's blog - Site Home - MSDN Blogs, su blogs.msdn.com.
  3. ^ (EN) Microsoft TypeScript: Can the father of C# save us from the tyranny of JavaScript?, su ZDNET.
  4. ^ 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).
  5. ^ (EN) Ars Staff, Microsoft TypeScript: the JavaScript we need, or a solution looking for a problem?, su Ars Technica, 3 ottobre 2012.
  6. ^ Anders Hejlsberg and Lars Bak: TypeScript, JavaScript, and Dart, su channel9.msdn.com.
  7. ^ harmony:proposals [ES Wiki], su wiki.ecmascript.org. URL consultato il 16 aprile 2018 (archiviato dall'url originale il 9 agosto 2013).

Altri progetti#edit

  • Wikimedia Commons contiene immagini o altri file su TypeScript

Collegamenti esterni#edit

This article is mirrored from “TypeScript” on Italiano Wikipedia, revision 152868565, written by Wikipedia's contributors and licensed CC BY-SA 4.0. Editing it here creates a Quire copy with its own history.

Synced with Wikipedia revision 152868565 · just now