TypeScript is a great language with a ton of features to support application development in JavaScript. By allowing optional type annotations, TypeScript can tell you at write-time or compile-time when something could break at run-time, reducing the number of bugs in your code. What could be wrong with that?
We will look at a few examples where you may have inadvertently prevented TypeScript from being able to help you, how you can avoid them in the future, and (maybe) how we all got in this mess in the first place.
Resources:
https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#new-unknown-top-type
https://www.typescriptlang.org/docs/handbook/advanced-types.html
https://www.typescriptlang.org/docs/handbook/compiler-options.html
https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals
https://github.com/Microsoft/TypeScript/wiki/Roadmap
https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Type Compatibility.md
https://github.com/Microsoft/TypeScript/wiki/FAQ#common-bugs-that-arent-bugs