Szerző: Gálffy Csaba

2016. július 14. 13:05

TypeScript 2.0: ezek az újdonságok

Nincs kész az alapoktól újraírt emitter, így csak a 2.1-ben jelenik meg az async/await támogatás a TypeScriptben. De van változás így is bőséggel, a Microsoft ernyője alatt fejlődő nyelv a leggyakoribb hibákat okozó problémák nyomába eredt.

Béta kiadásban már elérhető a TypeScript 2.0 - jelentette be fejlesztői blogján a Microsoft. A főverzió fontos újdonságokat hoz a típusok kezelésében, hamarosan a stabil verzió is megérkezhet.

Null-mentes típusok

A TypeScript sava-borsát az erős típusosság adja, ez különbözteti meg leginkább a mezei JavaScripttől. A nyelvben két speciális típus is helyet kapott, a Null és az Undefined, amelyek egy-egy értéket ismernek (nyilván a nullt és az undefinedet). Ezek az értékek ugyanakkor minden típusban is megtalálhatóak voltak, emiatt egy string változó néha null is lehetett - ez változik a 2.0-val, a string kizárólag stringet tartalmazhat, vagy például a number csak number típust tárolhat.

A nyelv nyitva hagyja a lehetőséget arra, hogy a változók null/undefined értékűek lehessenek, ez úgy válik lehetségessé, ha a változót több típus uniójával is definiálhatunk, tehát például a stringhez hozzáadhatjuk az undefined értéket a megfelelő művelettel. Az új null-mentes típusosság a visszafelé kompatibilitás érdekében opcionális, a -strictNullCheck flag beállításával érhető el ez a képesség. Enélkül minden marad a régiben, tehát a meglévő kódbázist nem kell azonnal módosítani a 2.0-ra migráláshoz.

Kapcsolódó fejlesztés, hogy a nyelv immár sokkal okosabban követi a használt típusokat a függvényeken és ciklusokon át, így pontosabb hibát tud dobni, ha a típusok valahol nem egyeznek.

Apróbb változás, hogy a modulok deklarációja immár még egyszerűbb, egyetlen sorral megadható a deklaráció, elhagyható az üres export megadása. Ezzel már képes futni a program, ha pedig pontosabban szeretné a fejlesztő deklarálni a modult, akkor visszatérhet és pontosíthat. A moduloknál joker karaktereket is lehet majd használni, ez jól jön, ha egyszerre sok modult szeretnénk importálni.

Async? Await.

Nem jó hír viszont, hogy az async/await függvények támogatása továbbra sem érkezett meg a TypeScriptbe. A csúszás oka, hogy az eredeti TypeScript emitter (amely a forráskódból a JavaScript kódot előállítja) ezt nem tudta megvalósítani, így egy új, komplexebb, fa-transzformációkkal dolgozó emittert kellett fejleszteni, ennek hatékony, gyors és megbízható megvalósítása pedig roppant időigényes feladatnak bizonyult.

A jó hír, hogy az implementáció elkészült, most zajlik a minőségellenőrzése és az async/await stabilizálása. A várakozás szerint ez a 2.1-es kiadásba már bele is fog kerülni, így végre elérhető lesz ez a JavaScript-képesség is a Microsoft-féle superset-nyelvből.

A TypeScript 2.0 újdonságairól a bejelentés posztjában, részletesebben pedig a githubos wiki-oldalon lehet olvasni.

a címlapról