Still not a typescript fan here. It feels like a half-baked language because of the insistence of not having a runtime (even though some information makes it through to the underlying js...so this objection of theirs isn't total). In a usual typed language, you could extract the type of an intersection type using pattern matching. But you can't do that in typescript. Instead you get to pick the most relevant ugly hack for your situation.
Typescript feels like every one of its features has some catch, and it's very irritating.
The issue that broke the camel's back for me was when I saw "cstomerName is not defined" in production. I just could not accept that it is OK to live with tools that let that happen.
It takes a lot of mental and emotional capital in the creative process to produce something that is truly wonderful. Microsoft is systemically incapable of approaching creative perfection. Very few are.
This is extremely unfair and rude. The TS language designer and lead developer is Anders Hejlsberg, who is also the chief architect of C# and Delphi. C# has been tremendously successful and, in my opinion, is truly wonderful as a general purpose language.
In the case of Typescript the team were working under very difficult constraints - the language must maintain strict compatibility with Javascript, and the output must be executable by a web browser that has never even heard of the language.
That the output is (or can be, with the right settings, anyway) very reasonable looking JS that would be easy to navigate and work on for anyone who'd been working on the same project in TS is a huge selling point. It's a nearly-instant, high-quality escape hatch if you decide you hate TypeScript, even if you're deeply into your project and have a ton of TS code already written. It's why comparisons to things like CoffeeScript don't hold up well, and (part of) why it's easier to sell to technical management than something like PureScript. Switching from TS to JS is very low-cost.
It's not just that the output is well-formed and sensible JS, it's that it's structured so similarly to the TS. With a recent EcmaScript version as your output, it's practically just the TypeScript with the type-related keywords & blocks stripped out.
As much as it could provide more and better features by breaking that guarantee, I think it's a brilliant decision & guideline, at least until WebAssembly is far more mature and the space starts to open up.
Typescript feels like every one of its features has some catch, and it's very irritating.