Using TypeScript unlocks following sound benefits:
TypeScript’s type inference means that you don’t have to annotate your code until you want more safety.
TypeScript and Babel let you use virtually all of the new features that ES6 brings today, without sacrificing backwards compatibility for older browsers.
Both support some kinds of optimization out of the box at compile time. Doing all of these optimizations manually would lead to sprawling, unreadable, unmaintainable code, but by delegating this work to our compiler, we get to write nice, idiomatic code, and have our toolchain take care of the rest.
Both can be used in the same projects by using Babel’s preset-typescript to generate your JS files, and then using TSC to do type checking and
.d.ts file generation.
TypeScript definitely wins in terms of the quantity, resources, and documentation available.
The debate whether to use TypeScript is over, as library maintainers you should (or even must) support typings, as app developers you can get away in personal projects but often required in enterprises.