Kompania Microsoft, Igalia dhe Bloomberg kanë iniciuar një përpjekje për të përfshirë në specifikimin e JavaScript një sintaksë për përcaktimin e qartë të tipeve, e ngjashme me sintaksën përdorur në gjuhën TypeScript. Aktualisht, prototipi i ndryshimeve, i propozuar për t'u përfshirë në standardin ECMAScript, është në diskutim paraprak (Stage 0). Në takimin e ardhshëm të marsit të komitetit TC39 pritet të kalojë në fazën e parë të shqyrtimit të propozimit me angazhimin e komunitetit ekspert nga ECMA.
Disponimi i informacionit të qartë rreth llojeve do të shmangë shumë gabime gjatë procesit të zhvillimit, do të mundësojë përdorimin e teknikave shtesë për optimizim, do ta thjeshtësojë defektimin dhe do ta bëjë kodin më të lexueshëm dhe më të lehtë për përmirësime dhe mbështetje nga zhvillues të tjerë. Mbështetja për llojet propozohet të realizohet si një mundësi opsionale — motorët JavaScript dhe runtime-et që nuk mbështesin verifikimin e llojeve do të injorojnë anotacionet me informacionin rreth llojeve dhe do ta trajtojnë kodin si më parë, duke e parë informacionin për llojet si komente. Por mjetet për verifikimin e llojeve do të jenë në gjendje të zbulojnë gabimet e lidhura me përdorimin e papërshtatshëm të llojeve, në bazë të informacionit të disponueshëm.
Megjithatë, ndryshe nga informacioni mbi tipet, i caktuar përmes annotimeve JSDoc, të cilat shënohen në formën e komenteve, tregimi i drejtpërdrejtë i tipeve në konstruksionet e përcaktimit të variablave do ta bëjë kodin më të dukshëm, të kuptueshëm dhe të lehtë për redaktim. Për shembull, ambientet e integruara të zhvillimit që mbështesin TypeScript do të jenë në gjendje të ngrenë menjëherë flamuj për gabimet në kodin JavaScript të tipizuar pa konvertime të tjera. Për më tepër, mbështetja e integruar për tipet do të lejojë ekzekutimin e programeve të shkruara në dialekte të tipizuara të JavaScript, siç janë TypeScript dhe Flow, pa nevojën për transpilim nga një gjuhë në tjetrën.

Из типов предлагается добавить «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
