It is a compiler + type checker + linter.
- Type validation
- JS Superset
Add types to JS to type check before you run code, types get removed on compile time.
Since it is a JS superset, you can adopt it in your codebase progressively.
Being a compiler, it can like Babel, transform your code to support features for older JS engines.