Toto je reakcia na komentáre v článku
https://www.root.cz/zpravicky/typescript-sa-na-githube-stal-programovacim-jazykom-cislo-jedna/nazory/ a keďže komunikácia je tam veľmi pomalá, a efektívnejšie je to prebrať do detailov tu na fóru, a získať pohľad viacej ľudí, myslím že je fajn tu začať túto "subjektívnu sebatu".
Osobne tvrdím že JS a TS je prakticky zhodný programovací jazyk až na jednu jedinú výnimku a to je syntax typovej anotácie (inline vs JSDoc, čo sú veľmi minimálne rozdiely. Ak by som ale mal brať že JS a TS je rozdielny jazyk (moje prirovnanie s "vymením podušku v Škoda Octavia a predám to ako moju vlastnú značku) dosť platí, pretože tie rozdiely sú obdobné ako v C prekladanom cez GCC vs Clang (aj tam sú konštrukty, ktoré chápe len jeden nástroj).
Navyše interoperability medzi JS a TS je tak obrovská, že vlastne všetky knižnice a frameworky fungujú v oboch bez akejkoľvek zmeny alebo "patchovania". Takže je logický assumption že je to stejný jazyk ak ekosystém je zhodný, nástroje sú zhodné (TSC rozumie JS a aj typovým anotáciám v ňom), atď... viď
https://github.com/Mlocik97/JSvsTS/tree/master/src môj example.
Ak by sme teda ale tvrdili že jazyk neurčuje tool ktorý ho spracuváva (pretože predsa GCC a Clang nie sú 2 rozdielne jazyky "C"), tak potom definícia jazyku je skutočne len špecifikácia syntaxe a API a v takom prípade JS vs TS zas len platí moje "rozdiel je len v syntaxy typovej anotácie"... z pohľadu runtime sú obe jazyky zhodné, z pohľadu toolingu a typovej kontroli tiež, z pohľadu ekosystému zhruba tiež, a v podstate TSC je pre mňa "type-aware linter" (však keď si to tak dnes zoberem TSC ani nepotrebujem na spustenie TS, viď BunJS, Node, ESBuild...), a transformácie ktoré to robí pri "transpilácii" sú na úrovni transformácií ktoré robí ESLint, ESBuild, či Babel.
Taktiež argument že TS má typy ktoré JS nemá mi príde nesprávny, predsa typy sú o tom ako sa dáta ukladajú do pamäte, a to je teda aspekt runtime, ktorý je v oboch jazykoch rovnaký. Teda defacto sú to jeden a ten istý jazyk. Rozdiel je max v typových anotáciách, nie typoch samotných... a rozdiel v anotáciách je fakt len v pár syntaktických rozdieloch.
Čo si myslíte o tom vy? A ak toto číta echo_zulu, môže pokračovať tu, aj tak ten článok už dosť sa zahrabal hlboko v správičkách a taktiež debata tam je dosť meh keď sa pol dňa len čaká na schválenie jedného komentáru, a pri takejto diskusii by to trvalo večnosť to celé "vyjasniť".
Ďakujem všetkým vopred za vaše názory.