If you also want to use it as an enforcer, you set it up as a pre-commit hook or a CI step or whatever you want.
The idea is not to be forced to typecheck on every little incremental build during development. Sometimes I _know_ what needs to be done to get typechecking to pass (I can see the type errors highlighted in my editor after all) but I don't want to have to fix it before running my code to see how it behaves, because maybe I'm just playing around with an idea.
There are pros and cons to typechecking and not typechecking, which is why both kinds of language exist. Annotation- stripping lets you get the best of both worlds.
Tried this on a project of mine. Enums seem to work fine for me.
EDIT: There are some issues with enums indeed https://github.com/babel/babel/tree/master/packages/babel-pl...
Because he thinks you can't do JS development without Babel.
(I haven't used TypeScript yet, so I might be wrong)
The only counter-example that I know of is that async/await were initially only supported when transpiling to ES6, but this is not true since at least 2.2 (https://github.com/Microsoft/TypeScript/issues/5210).
The error log shows me the rest of the files that need fixing.
How would you get that with Babel?
But you could just run "tsc --noEmit --watch" which will just report the project wide type errors to the console as you edit files.
(I work on Babel)