Chris Smith's article about What to Know Before Debating Type Systems is still a good read and pretty insightful even years later. His repeated points about implicit type annotations remind me of my (current) opinion about experimenting with TypeScript vs. straight ES6 / ES20015.
Costs and Caveats:
- Low but Positive Benefit (5) If I get tooling benefits (admittedly fewer than just jslint of jshint would already give, but still, VS Code support for TypeScript is pretty great on Mac, Windows, and Linux).
- Nice (Fairly Small) Benefit: (6) If I get documentation (and IntelliSense tooling) benefits from having the types around (infinitely better than comments that could be out of date since the compiler makes sure the programmer keeps this form of documentation in sync at all times).
- Biggest Benefit but How Rare is It? (7) If some or many incorrect programs are rejected before I even run them (especially common errors like missing object key or field names, variable names, etc. -- but I hear jslint/jshint can do this too, to some degree).
- Corollary Medium Size Benefit, Common for Me (8) If I lean on types for doing Nearly-Provably-Equivalent code refactors, the way that fits my style for C# coding -- when I want to change something in one place, have it break in 17 other places, and then fix every place knowing that it is every possible occurrence of the change (and I get a clickable list in the IDE).
If each condition is met, then there is a case (for me) for playing with TypeScript. I'm not arguing that it is good for every project, just that there are conditions where the benefits can outweigh the costs (especially when the costs are very low and the quality of the tools is so high).
Just to be clear: to be a fair comparison I would have to try using jslint/hint in a good IDE and see if using it with ES6 delivers 90% of the benefit of TypeScript.