Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú, operációsrendszer független Forráskód -> Javascript Meglévő projektek felhasználhatóak vagy TS kompatibilissé tehetőek VS2012, Emacs, Vim, Sublime Text
Jelkészlet, azonosítók, literálok Megjegyzések Utasítások, vezérlési szerkezetek szintaxisa Kivételkezelés Szabványos könyvtárak használata
Elemi típusok Any Number String Boolean Null Undefined Void Tömb típus Típuskonverzió Változók konstansok
Függvények Formálisparaméterek: automatikus típus(any) Paraméter alapértelmezett értéke Változó paraméter szám Nincs túlterhelés Pl.: function printf(... str: string[]) { document.write(str.join(" "));} printf(); printf(„Hello”); printf("Hello", "World", "!"); function hello(name = „Józsi”): void { printf(„Hello ”,name,”!”);}
Lényegében objektumok – singleton példányok Egymásba ágyazhatóak, de másba nem internal modules Lokális vagy exportált tagja egy másik modulnak external modules Egész file egy modul
Interfészek, osztályok, modulok Modulok: Alapértelmezetten rejtett objektumok – export Osztályok public, private Javascript-es láthatósági szabályok
class [osztály név] extends [ősosztály] implements [interfészek] { [osztály törzse] } TS osztályok -> JS objektumok class A { /*... osztály törzse... */ } var a : A = new A(); property, static member -> mindig public Metódusok felüldefiniálhatóak, de függvény túlterhelés nincs
Csak egy Mindig public Automatikusan létrejön a paraméter nélküli konstruktor, ha nem adjuk meg Automatikus öröklés Leszármazottban felüldefiniálható, de kötelező a super (paraméterek);
getter/setter – mint C#-ban setter mindig void, és csak egy argumentuma lehet
Csak egy ősosztály, de korlátlan interfész extends implements
Javascript-ben nem generálódik le Csak fordítási időben dob hibát Minden tag kötelezően public, de a tőle örökölt, függvények lehetnek private-ek az osztályban ? operátor -> opcionális mező, metódus