Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Mlocik97 12. 11. 2025, 00:12:47

Název: JavaScript vs. TypeScript: rovnaký alebo rozdielny jazyk?
Přispěvatel: Mlocik97 12. 11. 2025, 00:12:47
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.
Název: Re:JavaScript vs. TypeScript: rovnaký alebo rozdielny jazyk?
Přispěvatel: Martin Poljak 12. 11. 2025, 09:18:04
Typ dat je pouze konvence. Je pouze věcí konvence, zda třeba řada čísel v paměti je "jen" pole čísel s pevnou délkou nebo jde o řetězec s pevnou délkou. Takže ano, může mít typy, které JS nemá. Protože z hlediska jazyka jako takového ten typ je daný v podstatě jen tou deklarací. Anotancí. Konvencí.

A ano, je to samostatný jazyk. Jazyk právě těch typových deklarací. Má definovanou syntax, vyjadřovací prostředky, scope. Nic, čím by se lišil od ostatních domain-specific jazyků v něm není. A přesně v místě, kde se napojuje na JS tak tvoří univerzální jazyk spolu s ním. Ten je sice JS blízce příbuzný ale atokonto těžko může jít o tentýž jazyk.

Tolik prostá neformální logika.
Název: Re:JavaScript vs. TypeScript: rovnaký alebo rozdielny jazyk?
Přispěvatel: jano6 12. 11. 2025, 10:55:15
Sú to podľa mňa jednoznačne dva rozdielne jazyky. Ak sa naučíte JS, neznamená, že budete ovládať TS. Ten typový systém je dosť komplikovaný.

Ak sa budete hlásiť na job, kde budú požiadavky veľmi dobrá znalosť TS, nepochodíte s tým, však ja viem JS, to je to isté...
Název: Re:JavaScript vs. TypeScript: rovnaký alebo rozdielny jazyk?
Přispěvatel: Ink 12. 11. 2025, 11:26:07
Pokud vím, tak JS není podmnožinou TS, jelikož se některé konstrukce interpretují jinak:

https://news.ycombinator.com/item?id=18942886#18944467

Stejně jako C není podmnožina C++, pokud se něco v posledních letech nezměnilo.