When I started taking programming seriously I thought I wasn't interested in web development so I focused on getting productive with C and Rust and dabbling in Haskell - but rather quickly discovered that things are different now then they were in 2004 when I first tackled a website. The web is a whole new platform and it's ridiculous to avoid it outright. You cannot beat the portability it offers.
This kicked off a largely fruitless chain of hipster tech. I built little prototypes in ClojureScript's Reagent, Re-Frame, and Om. I built a few Elm toys. I tried PureScript's Halogen and Pux. I tried
bucklescript-tea and ReasonReact. I built an app in
yew taught me about React before I'd ever looked at any React code. I even spent a ridiculous about of time messing around with GHCJS to write my frontend code in Haskell - my poor old 2011 ThinkPad deserves a medal for that week.
However, I'm still having trouble giving up my types. My favorite of the above menagerie was Re-Frame except for the lack of types. Clojure is a joy to write but a pain to debug - I still spent the vast majority of my development time tracking down stupid errors at runtime that I'm used to having caught for me, or sifting through opaque Java stacktraces with very little relevant info. Part of me thinks this is a lack of experience with dynamic languages - almost everything I've used has been typed and compiled, with the sole exception of Clojure. Which suggests I should invest more time in learning how not to do that.
Is this disingenuous? I'd love to hear what people who already know and use these technologies think. Comfort-zone-wise I'm completely content to continue using TypeScript on my personal projects, and it seems more and more that it's being adopted by larger companies and frameworks. If that's holding me back, though, I should start learning JS proper now!