Zkušenosti s TypeScriptem

L..

  • ****
  • 302
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #15 kdy: 26. 03. 2020, 10:11:43 »
za mě TS moc nemusím a to z několika důvodů:
1) založen na transpilaci kódu a to je z mého pohledu zhovadilost,

No a třeba Céčko je založené na transpilaci kódu do strojáku. Je to taky zhovadilost?

2) zavádí do JS OOP patten, což je taky kr*vina (ikdyž nový TS už umí FC),

Kr*vina je hlavně tenhle bod. OOP v JS byl už dávno přes Typescriptem. Funkcionální programování totéž.

3) pochází od M$

To je asi nejrelevantnější bod z těch tří. Já to vidím tak:

Citace
Většina produkce Microsoftu je sh*t, ale vyprodukoval i dvě dobré věci: Age of Empires a Typescript ;D


Typescript za mě super:

- Umožňuje odchytat spoustu věcí už při psaní
- Typy slouží jako základní dokumentace
- Na jeho základě může IDE hezky napovídat (s čistým JS je to peklo)

Předtím jsem dělal v Javě. Její typový systém se mi líbil, ale duck typing TS jde ještě dál, umožňuje elegantně(ji) řešit situace, kde typový systém člověka zbytečně omezoval. Další věc, co byla v Javě problém byla implicitní nulovatelnost všech objektů (místo objektu mohl přijít NULL a z hlediska typového systému to bylo OK). To Typescript také umí jednoduše řešit plus přidává optional chaining, který umožňuje prázdné hodnoty (když mohou přijít) jednoduše ošetřit.

Jediná nevýhoda je, že díky možnosti operaci nad typy mohou být v TS občas hlášení o neshodě typů dost kryptická - člověk se musí krotit a nedělat věci moc složité :-)


SB

  • ****
  • 347
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #16 kdy: 26. 03. 2020, 16:52:26 »
...Ja preferuji silněji typovaná prostředí - chyby jsou nalezeny již v době kompilace...

Nechtěl jste napsat „některé chyby“?
A kdyby to bylo 50% všech chyb? Měnilo by to význam?

Samozřejmě. Znamenalo by to, že si pouze myslíte, že jste odstranil 100 % (všimněte si mezery za číslem) chyb, ale ve skutečnosti vám jich tam ještě 50 % (opět si všimněte mezery za číslem) zůstalo.

Re:Zkušenosti s TypeScriptem
« Odpověď #17 kdy: 26. 03. 2020, 19:05:20 »
No a třeba Céčko je založené na transpilaci kódu do strojáku. Je to taky zhovadilost?
psal jsem o JS, ne o céčku ;-)

Kr*vina je hlavně tenhle bod. OOP v JS byl už dávno přes Typescriptem. Funkcionální programování totéž.
opět jsem nikde nepsal, že OOP neexistoval. Psal jsem jen to, že OOP do světa JS dle mého pohledu nepatří. Obecně OOP považuji za antipattern.

- Umožňuje odchytat spoustu věcí už při psaní
- Typy slouží jako základní dokumentace
- Na jeho základě může IDE hezky napovídat (s čistým JS je to peklo)
Stejně jako Flow od Facebooku. Jen s tím rozdílem, že Flow je jen checker a nepotřebuji pro spuštění udělat transpile.

Jediná nevýhoda je, že díky možnosti operaci nad typy mohou být v TS občas hlášení o neshodě typů dost kryptická - člověk se musí krotit a nedělat věci moc složité :-)
To dělá i Flow, i .NET. Každý programovací jazyk má své klady i zápory.

Poslední dobou mi přijde, že na českých fórech nemůže člověk napsat svůj názor. Jakmile nejde s davem, je to špatně :-)

Osobně mám moc rád striktní typování, píšu jak JS, tak .NET, Pythonu, Javě, PHP. U JS se spokojím jen s checkerem. Tím ale nezatracuji TS, jak jsem psal dříve.

Hodně lidí prosazuje TS hlavně kvůli typovosti a kvůli "lepší" udržitelnosti kódu. Obojí je za mě, opakuji z mého pohledu totální blbost. Psal jsem i podílel jsem se na hodně velkých projektetech, které neměli typování (byl to čistý JS), nebo měli Flow a nikde nebyl problém s reuse komponent, projekt byl přehledný. Naopak jsem měl možnost pracovat na dvou projektech v TS, které psali rusáci a indové. Větší hnusy jsem snad neviděl. Z 95% všude bylo any nebo tsignore.

Re:Zkušenosti s TypeScriptem
« Odpověď #18 kdy: 26. 03. 2020, 20:06:19 »
Mně vždy přišlo, že pokud se použije typová inference, tak se zdrojový kód staticky typovaný neliší od dynamicky typovaného. Některé jazyky to neumožňují u všech deklarací, ale teoreticky to jde a třeba v C++ už jde psát bez explicitních typů (s plnou kontrolou při překladu).

U některých jazyků explicitní typy nejsou jen anotace pro kontrolu korektnosti kódu, ale ovlivňují sémantiku výsledného kódu.

Příklad: https://blog.jcoglan.com/2019/04/22/generic-returns-in-rust/

Popř. implicitní argumenty ve Scale také ovlivňují, co bude kód dělat.

Takové jazyky se principiálně nemohou obejít čistě s typovou inferencí, resp. už by to byl jiný programovací jazyk

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Zkušenosti s TypeScriptem
« Odpověď #19 kdy: 26. 03. 2020, 21:38:08 »
...Ja preferuji silněji typovaná prostředí - chyby jsou nalezeny již v době kompilace...

Nechtěl jste napsat „některé chyby“?
A kdyby to bylo 50% všech chyb? Měnilo by to význam?

Samozřejmě. Znamenalo by to, že si pouze myslíte, že jste odstranil 100 % (všimněte si mezery za číslem) chyb, ale ve skutečnosti vám jich tam ještě 50 % (opět si všimněte mezery za číslem) zůstalo.
V tom případě 50% nalezených chyb v době kompilace je super, a beru to.


Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #20 kdy: 27. 03. 2020, 00:06:23 »
...Ja preferuji silněji typovaná prostředí - chyby jsou nalezeny již v době kompilace...

Nechtěl jste napsat „některé chyby“?
A kdyby to bylo 50% všech chyb? Měnilo by to význam?

Samozřejmě. Znamenalo by to, že si pouze myslíte, že jste odstranil 100 % (všimněte si mezery za číslem) chyb, ale ve skutečnosti vám jich tam ještě 50 % (opět si všimněte mezery za číslem) zůstalo.
V tom případě 50% nalezených chyb v době kompilace je super, a beru to.
50% je paráda, ovšem tedy za předpokladu nekryptických chybových hlášek. Ale už i překladače C++ se polepšily.

SB

  • ****
  • 347
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #21 kdy: 27. 03. 2020, 11:48:18 »
Samozřejmě. Znamenalo by to, že si pouze myslíte, že jste odstranil 100 % (všimněte si mezery za číslem) chyb, ale ve skutečnosti vám jich tam ještě 50 % (opět si všimněte mezery za číslem) zůstalo.
V tom případě 50% nalezených chyb v době kompilace je super, a beru to.

Výborně. Tak teď, když už víme, že nám typová kontrola (zdaleka) nepochytá všechny chyby, je na čase zvážit, zda se nám vyplatí ji na chytání chyb zavádět a zvyšovat tím složitost kódu a snižovat jeho dynamičnost a obecnost.
Neřešte to znovu, už se to tu řešilo, a zjistilo se, že každý soudruh to má jinak. Věnujte se místo toho raději pravopisu, ten by naopak měl mít každý soudruh stejný (= dle pravidel).

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Zkušenosti s TypeScriptem
« Odpověď #22 kdy: 27. 03. 2020, 19:05:30 »
...Ja preferuji silněji typovaná prostředí - chyby jsou nalezeny již v době kompilace...

Nechtěl jste napsat „některé chyby“?
A kdyby to bylo 50% všech chyb? Měnilo by to význam?

Samozřejmě. Znamenalo by to, že si pouze myslíte, že jste odstranil 100 % (všimněte si mezery za číslem) chyb, ale ve skutečnosti vám jich tam ještě 50 % (opět si všimněte mezery za číslem) zůstalo.
V tom případě 50% nalezených chyb v době kompilace je super, a beru to.
50% je paráda, ovšem tedy za předpokladu nekryptických chybových hlášek. Ale už i překladače C++ se polepšily.

Rust má chybovky příkladný, řekl bych. Z čehož vyvozuji, že to jde :-)

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Zkušenosti s TypeScriptem
« Odpověď #23 kdy: 27. 03. 2020, 20:05:17 »
Samozřejmě. Znamenalo by to, že si pouze myslíte, že jste odstranil 100 % (všimněte si mezery za číslem) chyb, ale ve skutečnosti vám jich tam ještě 50 % (opět si všimněte mezery za číslem) zůstalo.
V tom případě 50% nalezených chyb v době kompilace je super, a beru to.

Výborně. Tak teď, když už víme, že nám typová kontrola (zdaleka) nepochytá všechny chyby, je na čase zvážit, zda se nám vyplatí ji na chytání chyb zavádět a zvyšovat tím složitost kódu a snižovat jeho dynamičnost a obecnost.
Neřešte to znovu, už se to tu řešilo, a zjistilo se, že každý soudruh to má jinak. Věnujte se místo toho raději pravopisu, ten by naopak měl mít každý soudruh stejný (= dle pravidel).

Jak říkáš, některé věci jsou otázkou každého soudruha.

Nutno ale podotknout, že v dnešní době chytrých jazyků s typovou inferencí už typová kontrola přináší jen benefity (žádné zvyšování složitosti kódu ani snižování dynamičnosti či obecnosti se již nekoná).

qelurg

  • ****
  • 372
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #24 kdy: 27. 03. 2020, 20:38:59 »
Samozřejmě. Znamenalo by to, že si pouze myslíte, že jste odstranil 100 % (všimněte si mezery za číslem) chyb, ale ve skutečnosti vám jich tam ještě 50 % (opět si všimněte mezery za číslem) zůstalo.
V tom případě 50% nalezených chyb v době kompilace je super, a beru to.

Výborně. Tak teď, když už víme, že nám typová kontrola (zdaleka) nepochytá všechny chyby, je na čase zvážit, zda se nám vyplatí ji na chytání chyb zavádět a zvyšovat tím složitost kódu a snižovat jeho dynamičnost a obecnost.
Neřešte to znovu, už se to tu řešilo, a zjistilo se, že každý soudruh to má jinak. Věnujte se místo toho raději pravopisu, ten by naopak měl mít každý soudruh stejný (= dle pravidel).

Ještě je nutno zmínit, že omezující typový systém je sám o sobě zdrojem zbytečných chyb.

Ink

  • *****
  • 655
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #25 kdy: 27. 03. 2020, 20:51:30 »
Výborně. Tak teď, když už víme, že nám typová kontrola (zdaleka) nepochytá všechny chyby, je na čase zvážit, zda se nám vyplatí ji na chytání chyb zavádět a zvyšovat tím složitost kódu a snižovat jeho dynamičnost a obecnost.
Neřešte to znovu, už se to tu řešilo, a zjistilo se, že každý soudruh to má jinak. Věnujte se místo toho raději pravopisu, ten by naopak měl mít každý soudruh stejný (= dle pravidel).

Ještě je nutno zmínit, že omezující typový systém je sám o sobě zdrojem zbytečných chyb.

Ano, omezeny typovy system zpusobuje zbytecne chyby. Kvalitni typovy system pomaha chybam predchazet.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #26 kdy: 27. 03. 2020, 21:07:33 »
...Ja preferuji silněji typovaná prostředí - chyby jsou nalezeny již v době kompilace...

Nechtěl jste napsat „některé chyby“?
A kdyby to bylo 50% všech chyb? Měnilo by to význam?

Samozřejmě. Znamenalo by to, že si pouze myslíte, že jste odstranil 100 % (všimněte si mezery za číslem) chyb, ale ve skutečnosti vám jich tam ještě 50 % (opět si všimněte mezery za číslem) zůstalo.
V tom případě 50% nalezených chyb v době kompilace je super, a beru to.
50% je paráda, ovšem tedy za předpokladu nekryptických chybových hlášek. Ale už i překladače C++ se polepšily.

Rust má chybovky příkladný, řekl bych. Z čehož vyvozuji, že to jde :-)
Jasně, že to jde, už i GCC to umí (pod tlakem clangu)  :)

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #27 kdy: 27. 03. 2020, 21:21:39 »
Samozřejmě. Znamenalo by to, že si pouze myslíte, že jste odstranil 100 % (všimněte si mezery za číslem) chyb, ale ve skutečnosti vám jich tam ještě 50 % (opět si všimněte mezery za číslem) zůstalo.
V tom případě 50% nalezených chyb v době kompilace je super, a beru to.

Výborně. Tak teď, když už víme, že nám typová kontrola (zdaleka) nepochytá všechny chyby, je na čase zvážit, zda se nám vyplatí ji na chytání chyb zavádět a zvyšovat tím složitost kódu a snižovat jeho dynamičnost a obecnost.
Neřešte to znovu, už se to tu řešilo, a zjistilo se, že každý soudruh to má jinak. Věnujte se místo toho raději pravopisu, ten by naopak měl mít každý soudruh stejný (= dle pravidel).
Nutno ale podotknout, že v dnešní době chytrých jazyků s typovou inferencí už typová kontrola přináší jen benefity (žádné zvyšování složitosti kódu ani snižování dynamičnosti či obecnosti se již nekoná).
To je pravda, ale s tou výhradou, že plně automatickou inferenci udělat nelze.

L..

  • ****
  • 302
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #28 kdy: 28. 03. 2020, 08:27:59 »
No a třeba Céčko je založené na transpilaci kódu do strojáku. Je to taky zhovadilost?
psal jsem o JS, ne o céčku ;-)

No právě. Kompilace se používá naprosto běžně, tak jsem chtěl vysvětlení, proč je v tomto jednom případě fuj a v jiných OK.

Kr*vina je hlavně tenhle bod. OOP v JS byl už dávno přes Typescriptem.
opět jsem nikde nepsal, že OOP neexistoval. Psal jsem jen to, že OOP do světa JS dle mého pohledu nepatří.

Psal jste, že TS "zavádí do JS OOP patten". Což je prostě kravina bez ohledu na to, co si o OOP myslíme.

Stejně jako Flow od Facebooku. Jen s tím rozdílem, že Flow je jen checker a nepotřebuji pro spuštění udělat transpile.

No a umí Flow třeba optional chaining nebo nullish coalescing? Reálně je Flow hodně podobné Typescriptu, jen (pravděpodobně) o něco méně mocné. I Typescript umí udělat jen typovou kontrolu (noEmit). A naopak zdroják ve Flow se musí zkompilovat (transpilovat) do Javascriptu, protože samozřejmě jeho syntaxi standardní JS engine neschroupne.

Poslední dobou mi přijde, že na českých fórech nemůže člověk napsat svůj názor. Jakmile nejde s davem, je to špatně :-)

Jojo, jak s někomu poukážu na faktické chyby a logické nesmysly v jeho příspěvku, hned se rozčiluje, že mu upírám jeho názor :D

Naopak jsem měl možnost pracovat na dvou projektech v TS, které psali rusáci a indové. Větší hnusy jsem snad neviděl. Z 95% všude bylo any nebo tsignore.

Pak ty projekty nebyly z 95% v TS, ale v čistém JS, který tak velebíte ;D

K tomu mě napadá opět jeden klasický citát, kterým se s vámi rozloučim:

Citace
Neexistuje programovací jazyk, ve kterém by se nedal napsat špatný program.

Re:Zkušenosti s TypeScriptem
« Odpověď #29 kdy: 28. 03. 2020, 08:44:17 »
S tou transpilaci kodu v javascriptu, tak to mi vysvetlete. Dyt Javascript je snad v soucasnosti ten nejopatchovanejsi jazyk na svete, kdyz v tom dneska chcete delat, tak potrebujete prinejmensim babel, a to nemluvim o ruznych drobnych jazykovych rozsirenich ecmascriptu, ktere si case to case muzete dodat. A potom to jeste protahnete kolikrat pres webpack. Tak co komu prijde divneho na tom, ze to transpiluje z Typescriptu,  ne z toho babelu?  :D :D :D

A v linteru mivaji nekteri zapnute abecedni setrizovani atributu a funkci ve tride. A pak je tam jeste dalsi featura, nodemon. A ustavicne se neco meni. A pak nam Javistum neco rikaji, ze programujeme moc slozite  :D
« Poslední změna: 28. 03. 2020, 08:47:46 od PetrK »