TypeScript is a superset of JavaScript that compiles down into plain JavaScript (ES3+). The main goal of TypeScript is to enable developers to leverage excellent static typing capabilities. It is suitable for large applications that would benefit from features like:
- Type annotations & type inference.
- Generics.
- Interfaces, enums, namespaces, modules and classes (the latter two available in ES6).
- Safe refactoring.
As far as I am aware, Babel simply “transpiles” newer ECMAScript features down into a format that is supported by older ECMAScript environments. It is suitable for developers who want to write plain JavaScript using newer language features.