Mám použiť Traceur namiesto Typescriptu na cieľ ES5, ale byť pripravený na ES6
Pracujem na veľkej kódovej základni, ktorá by mohla profitovať z Typescriptu, ale keďže nakoniec svet prejde na ES6, mám smerovať vývoj smerom k Traceur?
Nechcem meniť implementácie Typescriptu, aby som cielil na ES6 (keď bude pripravený), takže môj pocit teraz je pokračovať s Traceur.
Môže mi niekto poradiť?
Odpoveď č. 1
Určite nesúhlasím s názorom, že TypeScript a Traceur sú tak odlišné, TypeScript je ES5 s typmi a Traceur je len o ES6.
Na jednej strane je v priebehu vývoja ES6 kompatibilný TypeScript 2.0. Na druhej strane existuje niekoľko funkcií v Traceur označených ako experimentálne v dokumentácii, konkrétne typy a anotácie. A ukazuje sa, že typy sú veľmi podobné typom v TypeScript, zatiaľ čo anotácie sú niečo, čo je irelevantné pre ES6 aj TypeScript. Takže Traceur je skôr iba ES6 a už na to existuje názov: AtScript. Áno, máme ďalšie rozšírenie jazyka :-)
Existuje pekný snímok z prezentácie Miška Heveryho, ktorý ukazuje, čo sa tu naozaj deje, plne platný hneď po vydaní TypeScript 2.0:
Takže čokoľvek sa rozhodnete použiť, je dôležité poznamenať: sú to podmnožiny, môžete písať ES5/ES6 JS a bude to platný TypeScript kód, môžete písať TypeScript a bude to platný AtScript kód.
Ak sa vrátim k vašej otázke, dal by som pokornú radu začať s ES6 použitím Traceur s vypnutými experimentálnymi funkciami (je to teraz celkom stabilné) a rozširovať podľa potreby, pretože to nie je tak radikálne rozhodnutie, neuzamyká vás to a necháva priestor na pohyb v budúcnosti.
UPD: Na začiatku roku 2015 by som tiež odporučil venovať pozornosť projektu 6to5 (premenovaný na Babel) ako alternatíve k Traceur. Posúva sa veľmi rýchlo a poskytuje niektoré pekné funkcie, ako je čitateľnosť generovaného kódu a lepšia podpora pre node.js a build systémy.
Odpoveď č. 2
TypeScript a Traceur majú úplne odlišné ciele a nie sú porovnateľné spôsobom, akým sa ich snažíte porovnávať.
TypeScript je nadmnožina EcmaScriptu, ktorá pridáva prísne typovanie. Obsahuje niektoré funkcie z ES6, ale jeho hlavným cieľom je pridať prísne typovanie do jazyka (pri zachovaní súladu s ES6), nie poskytovať podporu ES6.
Naopak, Traceur je kompilátor z budúceho EcmaScriptu do aktuálneho EcmaScriptu. Do jazyka nepridáva nič, čo už nie je navrhnuté pre nasledujúcu verziu EcmaScriptu.
Ak dnes chcete písať iba EcmaScript 6, použite Traceur. Ak chcete voliteľné prísne typovanie a všetky výhody, ktoré s tým súvisia, plus niektoré funkcie ES6, použite TypeScript.
