I've been a big TypeScript hater in the past, but I have to admit it works well when JavaScript is the _only_ language you're dealing with. You get to just turn off your brain and let the type checker find all the undefineds, nulls, etc. But as soon as you have to convert to and from HTML/CSS/SQL it definitely becomes a big pain.