1
Vývoj / Re:Typescript module vs namespace
« kdy: 14. 10. 2025, 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.
Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.
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.CitaceKaž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.Citacev iných jazykoch je NS čisto len menný priestor (C++, C#).
Takto ho vnímam aj v TypeScript-e.CitaceA 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.
Používá se kombinace join ... into a DefaultIfEmpty().
query {
for country in dc.Dbo.Countries do
where country.IsEnabled
join city in dc.Dbo.Cities on (country.Id = city.CountryId)
sortBy country.Name
thenBy city.Name
select (country.Id, country.Name, city.Id, city.Name, city.IsCapital)
}
query {
for country in dc.Dbo.Countries do
where country.IsEnabled
leftOuterJoin city in dc.Dbo.Cities on (country.Id = city.CountryId) into cities'
for city' in cities'.DefaultIfEmpty() do
sortBy country.Name
thenBy city'.Name
select (country.Id, country.Name, city'.Id, city'.Name, city'.IsCapital)
}
System.Exception: 'unrecognised method call value(FSharp.Data.Sql.Runtime.QueryImplementation+SqlQueryable`1[FSharp.Data.Sql.Common.SqlEntity]).GroupJoin(value(FSharp.Data.Sql.Runtime.QueryImplementation+SqlQueryable`1[FSharp.Data.Sql.Common.SqlEntity]), country => country.GetColumn("Id"), city => city.GetColumn("CountryId"), (country, cities') => new AnonymousObject`2(Item1 = country, Item2 = cities'.DefaultIfEmpty()))'
rc.conf je sh skript, loader.conf umí jen přiřazení hodnot se syntaxí kompatibilní se sh, jail.conf je interní formát jailu. Ke všem třem jsou manuálové stránky a ke všemu ve FreeBSD jsou zdrojáky.
V TypeScript-e som takéto reflexie nikdy nepotreboval. Veci tam do seba pekne zapadajú už v compile time vďaka vlastnostiam ako discriminated unions alebo type predicates.
type LedColour = 'red' | 'green' | 'blue';
function lightUpTheLed(color: LedColour) {
...
}
lightUpTheLed("yellow"); // tu mi kompilator vyhodi chybu
const ledColour = await (await fetch('/api/get-color')).json<LedColour>(); // vrati "yellow"
lightUpTheLed(ledColour);
Môj názor je presne opačný - ak potrebujem reflexie, aby som v runtime zistil typ objektu, tak je to nedostatok daného jazyka (prípadne nevhodný návrh kódu). TypeScript je pre mňa dôkaz, že sa to dá urobiť bez reflexií, jednoducho, čitateľne a v compile time.
var text = "ABC";
text.GetType().Name // vrati nazov typu premennej "text" ako "string";
Proč se cpe JavaScript na backend?
Za 20 rokov som si prešiel asi všetkými mainstreamovými jazykmi a TypeScript je môj obľúbenec [*1] Nepoznám žiadny iný jazyk, ktorý by mal takú vyjadrovaciu schopnosť čo do typov [*2] A od typovej bezpečnosti sa potom odvíja veľa ďalších vecí.