Navrhuje sa pridať do jazyka JavaScript syntax s informáciami o type

Microsoft, Igalia a Bloomberg sa chopili iniciatívy a zahrnuli syntax do špecifikácie JavaScriptu pre explicitné definície typov, podobnú syntaxi používanej v jazyku TypeScript. V súčasnosti sú prototypové zmeny navrhnuté na zahrnutie do štandardu ECMAScript predložené na predbežné diskusie (fáza 0). Na ďalšom marcovom zasadnutí výboru TC39 sa plánuje posunúť do prvej fázy posudzovania návrhu so zapojením odbornej komunity z ECMA.

Explicitne špecifikované informácie o type vám umožnia vyhnúť sa mnohým chybám počas procesu vývoja, umožní vám použiť ďalšie optimalizačné techniky, zjednoduší ladenie a urobí kód čitateľnejším a ľahším na úpravu a podporu zo strany vývojárov tretích strán. Navrhuje sa implementácia podpory typu ako voliteľná funkcia - JavaScriptové motory a runtime, ktoré nepodporujú kontrolu typu, budú ignorovať anotácie s informáciami o type a spracovať kód ako predtým, pričom údaje o type budú považovať za komentáre. Nástroje na kontrolu typov však budú môcť použiť dostupné informácie na identifikáciu chýb spojených s nesprávnym používaním typov.

Navyše, na rozdiel od informácií o type špecifikovaných pomocou anotácií JSDoc špecifikovaných vo forme komentárov, priame uvedenie typov priamo v konštrukciách definície premenných spôsobí, že kód bude vizuálnejší, zrozumiteľnejší a ľahšie upraviteľný. Napríklad IDE s podporou TypeScript budú schopné okamžite zvýrazniť chyby v napísanom kóde JavaScript bez ďalších konverzií. Okrem toho vstavaná podpora typov umožní spúšťať programy napísané v písaných dialektoch JavaScriptu, ako napríklad TypeScript a Flow, bez prepisovania z jedného jazyka do druhého.

Navrhuje sa pridať do jazyka JavaScript syntax s informáciami o type

Medzi typy sa navrhuje pridať „reťazec“, „číslo“ a „boolean“, ktoré možno použiť pri definovaní premenných, parametrov funkcií, prvkov objektu, polí tried, typovaných polí („číslo[]“). Navrhuje sa tiež poskytnúť podporu pre zlúčené typy („reťazec | číslo“) a generiká. nech x: reťazec; function add(a: number, b: number) { return a + b; } interface Osoba { meno: string; vek:číslo; } funkcia foo (x: T) { return x; } funkcia foo(x: reťazec | číslo): reťazec | číslo { if (typeof x === číslo) { return x + 1 } else { return x + "!" } }

Zdroj: opennet.ru

Pridať komentár