Kompani si Microsoft, Igalia dhe Bloomberg kanë inicuar përfshirjen në specifikimin e JavaScript një sintaksë për përcaktimin e qartë të tipeve, e ngjashme me sintaksën e përdorur në gjuhën TypeScript. Aktualisht, prototipi i ndryshimeve, i propozuar për t'u përfshirë në standardin ECMAScript, është bërë objekt diskutimesh paraprake (Stadiumi 0). Në mbledhjen e ardhshme të marsit të komitetit TC39 planifikohet t’i kalojë propozimi në fazën e parë të shqyrtimit me angazhimin e komunitetit ekspert nga ECMA.
Prania e informacionit për tipe të përcaktuar në mënyrë të qartë do të ndihmojë në shmangien e shumë gabimeve gjatë zhvillimit, do të mundësojë përdorimin e teknikave të tjera të optimizimit, do të thjeshtësojë depurimin dhe do ta bëjë kodin më të lexueshëm dhe më të lehtë për t'u bërë ndryshime e mbështetje nga zhvillues të tjerë. Mbështetje për tipe propozohet të realizohet si një mundësi opsionale — motorët JavaScript dhe runtime që nuk mbështesin verifikimin e tipeve do të injorojnë anotimet me informacion rreth tipeve dhe do të përpunojnë kodin si më parë, duke e perceptuar informacionin për tipe si komente. Por mjetet për kontrollin e tipeve do të mund të zbulojnë gabimet në bazë të informacionit të disponueshëm të lidhura me përdorimin e gabuar të tipeve.
Në këtë rast, ndryshe nga informacioni mbi tipe që jepet me anë të anotimeve JSDoc, të cilat shprehen në formën e komenteve, përcaktimi i drejtpërdrejtë i tipeve në struktura të përcaktimeve të variablave do ta bëjë kodin më të dukshëm, më të kuptueshëm dhe më të lehtë për t'u redaktuar. Për shembull, ambientet e integruara të zhvillimit që mbështetin TypeScript do të mund të tregojnë menjëherë gabimet në kodin JavaScript të tipizuar pa nevojën për transformime të tjera. Për më tepër, mbështetje e integruar e tipeve do të mundësojë ekzekutimin e programeve të shkruara në dialekte të tipizuara të JavaScript, siç janë TypeScript dhe Flow, pa transpiluara nga një gjuhë në një tjetër.

Из типов предлагается добавить «string», «number» и «boolean», которые можно будет использовать при определении переменных, параметров функций, элементов объектов, полей классов, типизированных массивов («number[]»). Предлагается также обеспечить поддержку объединённых типов («string | number») и дженериков. let x: string; function add(a: number, b: number) { return a + b; } interface Person { name: string; age: number; } function foo<T>(x: T) { return x; } function foo(x: string | number): string | number { if (typeof x === number) { return x + 1 } else { return x + «!» } }
Burimi: opennet.ru
