Typescript module vs namespace

Typescript module vs namespace
« kdy: 12. 10. 2025, 20:16:32 »
VSCode resp tslint mi zakazuje používať keyword module. Pritom celé JS / TS je o moduloch. Nameisto modulu mi to vnucuje keyword namespace.
Každopádne v TS je modul synonimum pre namespace (čo je úplná absurdita vymyslená Microsoftom), v iných jazykoch je NS čisto len menný priestor (C++, C#).
A modul je skutočne element jazyka, ktorý sa stará aj o viditelnosť (exporty) taktiež modul môže byť v jednom súbore len jeden zato namespace môže byť rozdelený do viac súborov.
Potom sú jazyky ktoré majú aj moduly s parametrickým polymorfizmom, ale to teraz nejdem riešiť. Proste modul má bližšie k static class ako ku namespace. Z tohto pohľadu ide v TS o moduly a skutočné namespaces TS ani JS nemá. Inými slovami chcem používať kľúčové slovo module. Ako to mám povoliť? Tipy od AI nefungujú.


Kit

  • *****
  • 896
    • Zobrazit profil
    • E-mail
Re:Typescript module vs namespace
« Odpověď #1 kdy: 12. 10. 2025, 20:23:31 »
Vzhledem k tomu, že static class je nesmysl, tak se zkus naučit používat namespace.

Mlocik97

  • *****
  • 953
  • Ubunťák, JS dev.
    • Zobrazit profil
    • E-mail
Re:Typescript module vs namespace
« Odpověď #2 kdy: 12. 10. 2025, 21:28:58 »
Ak chceš, môžeš si vytvoriť TS transformer, ktorý ti preloží module do namespace keywordu. Je to jednoduché docieliť, aj keď nezmyselné robiť to.

Re:Typescript module vs namespace
« Odpověď #3 kdy: 12. 10. 2025, 21:58:10 »
Termín "module" už má v ECMAScript-e svoj význam a TypeScript ho len rešpektuje (t.j. ES6 prípadne CommojJS modules). Preto sa táto ďalšia/iná vlastnosť volá "namespace" a príde mi to ako technicky presné pomenovanie.

Citace
Každopádne v TS je modul synonimum pre namespace

Nie je, sú to dve odlišné veci. Možno ťa mýli, že pred dávnymi rokmi sa terminológia TypeScript-u trochu líšia, ale to je fakt dávno.

Citace
v iných jazykoch je NS čisto len menný priestor (C++, C#).

Takto ho vnímam aj v TypeScript-e.

Citace
A modul je skutočne element jazyka, ktorý sa stará aj o viditelnosť (exporty) taktiež modul môže byť v jednom súbore len jeden zato namespace môže byť rozdelený do viac súborov.

Takto to v TypeScript-e je.

Ale možno mi len niečo uniká, namespaces vôbec nevyužívam.





Re:Typescript module vs namespace
« Odpověď #4 kdy: 12. 10. 2025, 21:58:50 »
Pokud chcete opravdu poradit, dejte sem příklad kódu, jak ho chcete napsat, a jakou chybu na tom TSlint hlásí.


Re:Typescript module vs namespace
« Odpověď #5 kdy: Dnes v 16:19:26 »
Termín "module" už má v ECMAScript-e svoj význam a TypeScript ho len rešpektuje (t.j. ES6 prípadne CommojJS modules). Preto sa táto ďalšia/iná vlastnosť volá "namespace" a príde mi to ako technicky presné pomenovanie.

Citace
Každopádne v TS je modul synonimum pre namespace

Nie je, sú to dve odlišné veci. Možno ťa mýli, že pred dávnymi rokmi sa terminológia TypeScript-u trochu líšia, ale to je fakt dávno.

Citace
v iných jazykoch je NS čisto len menný priestor (C++, C#).

Takto ho vnímam aj v TypeScript-e.

Citace
A modul je skutočne element jazyka, ktorý sa stará aj o viditelnosť (exporty) taktiež modul môže byť v jednom súbore len jeden zato namespace môže byť rozdelený do viac súborov.

Takto to v TypeScript-e je.

Ale možno mi len niečo uniká, namespaces vôbec nevyužívam.

v TS nie su odlisne. Ale semanticky je to nezmysel.

>> Takto ho vnímam aj v TypeScript-e.

menný priestor nemá riešiť viditelnosť (exporty), a má byť možné ho definovať vo viacerých súboroch. namespace v TS neni možné definovať vo viacerých súboroch a obsahuje exporty, teda to neni skutočný menný priestor ale modul. TS skutočné menné priestory neobsahuje obsahuje len moduly pomenované menný priestor.

keď si trabant microsoft premnuje na lambo tak stále to bude trabant a nie lambo :D
« Poslední změna: Dnes v 16:26:17 od fortran1986 »

Re:Typescript module vs namespace
« Odpověď #6 kdy: Dnes v 16:23:30 »
ale už sa k tejto téme nejdem vyjadrovať odpoveď na nastavenie tslintu som sa nedozvedel, ale už vidím že sa tu schyluje ku flame a na to fakt nemám čas.