dactilografiat | |
---|---|
Clasa de limba |
multi- paradigma : orientat pe obiecte , generic , funcțional , imperativ , orientat pe aspect, orientat pe evenimente , programare prototip |
Tipul de execuție | compilare la JavaScript |
Aparut in | 1 octombrie 2012 |
Autor | Microsoft |
Dezvoltator | Microsoft |
Extensie de fișier | .tssau.tsx |
Eliberare | 4.7.4 [1] ( 17 iunie 2022 ) |
A fost influențat | JavaScript , C# , Java și CoffeeScript |
Licență | Licență Apache 2.0 [2] |
Site-ul web | typescriptlang.org _ |
Fișiere media la Wikimedia Commons |
TypeScript este un limbaj de programare introdus de Microsoft în 2012 și poziționat ca instrument de dezvoltare a aplicațiilor web care extinde capacitățile JavaScript [3] [4] [5] [6] [7] [8] .
Dezvoltatorul limbajului TypeScript este Anders Hejlsberg , care a creat anterior Turbo Pascal , Delphi și C# .
Specificațiile de limbă sunt deschise și publicate conform Acordului de specificații Open Web Foundation (OWFa 1.0) [9] .
TypeScript este compatibil cu JavaScript și se compilează cu acesta din urmă. De fapt, odată compilat, un program TypeScript poate fi rulat în orice browser modern sau utilizat împreună cu platforma serverului Node.js. Codul pentru compilatorul experimental care traduce TypeScript în JavaScript este distribuit sub licența Apache . Dezvoltarea sa se realizează într-un depozit public prin serviciul GitHub [10] .
TypeScript diferă de JavaScript prin capacitatea sa de a atribui în mod explicit tipuri statice , suport pentru utilizarea claselor cu drepturi depline (ca în limbajele tradiționale orientate pe obiecte ) și suport pentru conectarea modulelor, care este conceput pentru a crește viteza de dezvoltare, pentru a facilita lizibilitatea, refactorizează și reutiliza codul și ajută la găsirea erorilor în stadiul de dezvoltare și compilare și, eventual, la accelerarea execuției programelor.
Se preconizeaza ca, datorita compatibilitatii deplina cu versiunea inversa, adaptarea aplicatiilor existente la un nou limbaj de programare sa poata avea loc in etape, prin definirea treptata a tipurilor.
La momentul lansării, există fișiere pentru înțelegerea sintaxei TypeScript extinse pentru Vim și Emacs , precum și un plug-in pentru Microsoft Visual Studio .
Concomitent cu lansarea specificației, dezvoltatorii au pregătit fișiere cu declarații de tip static pentru unele biblioteci JavaScript populare , inclusiv jQuery .
TypeScript a apărut din defecte percepute în JavaScript în aplicațiile pe scară largă, atât la Microsoft, cât și la alți utilizatori JavaScript [11] . Problemele cu dezvoltarea de programe complexe în JavaScript au condus la necesitatea facilitării dezvoltării componentelor limbajului [4] .
Dezvoltatorii TypeScript căutau o soluție care să nu rupă compatibilitatea cu standardul și suportul său multiplatform. Știind că numai standardul ECMAScript oferă suport viitor pentru programarea bazată pe clasă , TypeScript a fost construit pe această presupunere. Acest lucru a dus la crearea unui compilator JavaScript cu un set de extensii de limbaj sintactic augmentat de o propunere care transformă extensiile în JavaScript. În acest sens, TypeScript este o reprezentare a ceea ce să vă așteptați de la ECMAScript 6. Aspectul unic nu este în propunere, ci în adăugarea tastării statice la TypeScript , care permite limbajului să fie analizat static, facilitând instrumentele și suportul IDE.
TypeScript adaugă suport pentru următoarele construcții din standardul ECMAScript 6: clase, module și sintaxa funcției săgeată.
Generator de parole pseudo -aleatorie folosind modulul „cripto” încorporat în Node.js :
import * ca cripto de la "crypto" ; function generate ( lungime : numar = 16 ) : sir { const majuscule : sir = " ABCDEFGHIJKLMNOPQRSTUVWXYZ " ; const minuscule : șir = "abcdefghijklmnopqrstuvwxyz" ; numere const : șir = "0123456789" ; simboluri const : șir = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" ; const toate : șir = majuscule + minuscule + numere + simboluri ; let parola : șir = "" ; for ( let index : număr = 0 ; index < lungime ; index ++ ) { const randomNumber : număr = crypto . randomInt ( all . length ); parola += all . charAt ( randomNumber ); } returnează parola ; }TypeScript este o extensie a specificației ECMAScript 5. Au fost adăugate următoarele opțiuni:
Sintactic, TypeScript este foarte asemănător cu JScript .NET , cea mai recentă implementare de către Microsoft a localizării ECMA-262, care oferă suport pentru tastarea statică și caracteristicile clasice ale limbajului orientat pe obiecte, cum ar fi clase, moștenire, interfețe și spații de nume.
TypeScript este compatibil cu JavaScript. Astfel, orice cod JavaScript este corect și pentru TypeScript. În TypeScript, puteți utiliza codul JS existent și puteți include biblioteci JavaScript populare [13] . Declarațiile de tip pentru aceste biblioteci vin adesea cu ele, sau pot fi scrise de mână.
În mod implicit, TypeScript se compilează la JavaScript compatibil ES3 [13] ca standard predominant. Puteți utiliza opțiunea --target sau versiunea sa prescurtată, -t, pentru a specifica versiunea standardului JavaScript la care se va compila codul TypeScript. Acest parametru poate lua următoarele valori: ES3 (implicit), ES5, ES6 / ES2015, ES7 / ES2016, ES2017, ES2018, ES2019, ES2020 sau ESNext:
aplicația tsc . ts - t ES5TypeScript oferă declarații de tip pentru a le verifica static consistența . Acest lucru este opțional și poate fi ignorat pentru a utiliza tastarea dinamică JavaScript obișnuită.
funcţia adaugă ( stânga : număr , dreapta : număr ) : număr { return stânga + dreapta ; }Există mai multe adnotări pentru tipurile primitive: number, booleanși string. Structurile introduse slab sau dinamic sunt de tip any.
Definițiile de tip pot fi exportate într-un fișier de declarație separat pentru a face informațiile de tip disponibile pentru scripturile TypeScript folosind diferitele tipuri deja compilate în JavaScript. Definițiile pot fi declarate unei biblioteci JavaScript existente, așa cum sa făcut pentru Node.js și jQuery .
Compilatorul TypeScript încearcă să deducă tipuri atunci când acestea nu sunt specificate în mod explicit. De exemplu, metoda adddin codul de mai sus ar rezulta ca return to numberchiar dacă nu ar exista niciun tip de returnare furnizat în definiție. Aceasta se bazează pe tipuri statice leftși right numberspe cunoașterea compilatorului că rezultatul adăugării a două numberseste întotdeauna number. Cu toate acestea, specificarea tipului de returnare permite compilatorului să verifice corectitudinea.
Dacă tipul nu poate fi dedus din cauza declarațiilor lipsă, atunci va fi implicit un tip dinamic any. Un tip de valoare anyacceptă aceleași operații ca și o valoare în JavaScript și se efectuează o verificare statică minimă a tipului pentru operația de pe any[14] .
Fișiere declarațiiCând este compilat un script TypeScript, există o opțiune de a crea un fișier de declarație (cu extensia .d.ts) care este utilizat ca interfață pentru componentele din JavaScript compilat. În acest proces, compilatorul elimină toate funcțiile și corpurile metodei și reține doar semnăturile de tip care sunt exportate. Fișierul de declarație rezultat poate fi utilizat pentru a descrie tipurile virtuale exportate TypeScript ale unei biblioteci sau module JavaScript atunci când o terță parte le folosește în TypeScript.
Conceptul de fișiere de declarație este similar cu cel al fișierelor de antet în C++ :
declare module aritmetica { adaugă ( stânga : număr , dreapta : număr ) : număr ; scăderea ( stânga : număr , dreapta : număr ) : număr ; înmulţire ( stânga : număr , dreapta : număr ) : număr ; divide ( stânga : număr , dreapta : număr ) : număr ; }Fișierele manifest pot fi scrise manual pentru bibliotecile JavaScript existente, precum și pentru jQuery și Node.js.
TypeScript acceptă clasele ECMAScript 6, ceea ce vă permite să susțineți opțiunea de declarare a tipului.
clasă Persoană { constructor ( nume privat numai în citire : șir , vârstă privată numai în citire : număr , salariu privat numai în citire : număr ) {} public toString () : șir { return `Nume: ${ this . nume } \nVârsta: ${ aceasta . vârsta } \nSalariu: ${ aceasta . salariu } ` ; } }TypeScript acceptă programarea generică [15] .
Folosind module, TypeScript acceptă încapsularea claselor, interfețelor, funcțiilor și variabilelor în spațiile de nume. TypeScript face distincție între modulele interne și externe. Modulele interne se bazează pe sintaxa modulului din ECMAScript 6, în timp ce modulele externe folosesc o bibliotecă JavaScript ( AMD sau CommonJS ) [16] .
Se numește compilatorul TypeScript tsc - este scris în limbajul TypeScript, poate fi compilat în JavaScript standard și apoi rulat pe orice motor JavaScript (de exemplu, într-un browser). Compilatorul vine cu un server de script care poate rula compilatorul. Este disponibil și ca pachet pentru node.jscare îl folosește node.jsca server.
Există, de asemenea, o versiune alfa a unui compilator JavaScript pe partea clientului care execută TypeScript din mers pe măsură ce pagina se încarcă.
Versiunea actuală a compilatorului utilizează implicit ECMAScript versiunea 5. Dar este posibil să utilizați și ECMAScript 2015 pentru a avea acces la caracteristicile unice ale limbajului acestei versiuni, cum ar fi generatoarele. Clasele, altele decât cele descrise explicit în standardul ECMAScript 2015, sunt disponibile în ambele versiuni.
Există un plug-in de la Microsoft pentru Visual Studio 2012 și WebMatrix, iar Visual Studio 2013, Visual Studio 2015 au suport complet la nivel IDE. De asemenea, acceptat în Visual Studio Code . JetBrains acceptă TypeScript, inclusiv compilarea, refactorizarea și depanarea în IDE-urile platformei IntelliJ, cum ar fi PhpStorm 6, WebStorm 6 și IntelliJ IDEA, precum și extensia lor Visual Studio ReSharper 8.1. Suportat în mediul Codeanywhere . Există pluginuri pentru NetBeans și Eclipse pentru a suporta limbajul.
Printre mediile online, limbajul este acceptat în Cloud9 , Codenvy , CodePen .
Există suport lingvistic de bază în editorii de text Sublime Text, Emacs și Vim. Editorul Atom are un plugin pentru TypeScript cu suport pentru completare automată, navigare în cod, formatare și compilare rapidă.
![]() | |
---|---|
În cataloagele bibliografice |
JavaScript | |
---|---|
Idei | |
Compilatoare | |
Motoare | |
Biblioteci și cadre | |
Editori | |
Instrumente |
|
Tehnologii conexe | |
oameni | |
Categorie |
Node.js | ||
---|---|---|
Platformă | ||
Cadre | ||
Limbi | ||
gazde |
|
Software gratuit și open source Microsoft | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
informatii generale |
| ||||||||||||
software _ |
| ||||||||||||
Licențe | |||||||||||||
subiecte asemănătoare |
| ||||||||||||
Categorie |