My experience has become that TypeScript is really only suitable for classic OO domain programming, with many nice little classes and mutable state. I work on a project where our model layer (MVC) is made like that, and it works like a charm.
Interfacing with other libraries tends to work ok, but you'll have to forget about using --noImplicitAny (and hand in a whole bunch of safety guarantees with that). Doing non-classical-OO stuff quickly becomes a pain. I recently spent many days making a nice Om-style immutable model layer with TypeScript and Immutable.js, and it just doesn't work. The generics simply aren't powerful enough, and I spent days (and many worthless lines of code) fighting it. This saddens me.
General rule of thumb; if you're building "content" apps you can get away with Titanium. If you're trying to build awesome experiences you'd have to go native and Xamarin is currently the best cross-platform suite out there.
BTW, the OP's original rant reminds me of a similar rant for Titanium: http://usingimho.wordpress.com/2011/06/14/why-you-should-sta... That rant is a few years old and Titanium has made a lot of progress since then. However, some of the points still hold true.