Se propune adăugarea de sintaxă cu informații de tip la limbajul JavaScript

Microsoft, Igalia și Bloomberg au luat inițiativa de a include sintaxa în specificația JavaScript pentru definițiile de tip explicite, similare cu sintaxa folosită în limbajul TypeScript. În prezent, modificările prototipului propuse pentru includerea în standardul ECMAScript sunt supuse discuțiilor preliminare (Etapa 0). La următoarea reuniune a comitetului TC39 din martie, este planificată trecerea la prima etapă de examinare a propunerii cu implicarea comunității de experți din ECMA.

Având informații de tip specificate în mod explicit, vă va permite să evitați multe erori în timpul procesului de dezvoltare, să faceți posibilă utilizarea unor tehnici suplimentare de optimizare, să simplificați depanarea și să faceți codul mai lizibil și mai ușor de modificat și suportat de către dezvoltatorii terți. Suportul de tip este propus a fi implementat ca o caracteristică opțională - motoarele JavaScript și timpii de execuție care nu acceptă verificarea tipului vor ignora adnotările cu informații despre tip și vor procesa codul ca înainte, tratând datele tipului ca comentarii. Dar instrumentele de verificare a tipurilor vor putea folosi informațiile disponibile pentru a identifica erorile asociate cu utilizarea incorectă a tipurilor.

În plus, spre deosebire de informațiile de tip specificate folosind adnotări JSDoc specificate sub formă de comentarii, indicarea directă a tipurilor direct în constructele de definiție variabilă va face codul mai vizual, mai ușor de înțeles și mai ușor de editat. De exemplu, IDE-urile cu suport TypeScript vor putea evidenția imediat erorile din codul JavaScript tastat fără conversii suplimentare. În plus, suportul de tip încorporat va face posibilă rularea programelor scrise în dialecte JavaScript tastate, cum ar fi TypeScript și Flow, fără a transpira dintr-o limbă în alta.

Se propune adăugarea de sintaxă cu informații de tip la limbajul JavaScript

Dintre tipuri, se propune adăugarea „șir”, „număr” și „boolean”, care pot fi folosite la definirea variabilelor, parametrilor funcției, elementelor obiect, câmpurilor de clasă, matricelor tastate („number[]”). De asemenea, se propune să se ofere suport pentru tipurile îmbinate („șir | număr”) și generice. fie x: șir; function add(a: number, b: number) { return a + b; } interfață Persoană { nume: șir; varsta:numar; } funcția foo (x: T) { return x; } funcția foo(x: șir | număr): șir | număr { if (tip de x === număr) { return x + 1 } else { return x + "!" } }

Sursa: opennet.ru

Adauga un comentariu