Implement erasable Enum Annotations
In order to meet the goal of allowing "erasable" syntax only, which can be trivially converted to JS by removing type annotations, as described in #60790, including input from the TypeScript team to prefer the annotation to the "as enum" syntax.
This permits emitting code by simply erasing the Type Annotation. The TypeChecker sees references to the variable as a reference to an Enum-like type.
There are currently a few remaining obvious issues, for instance comments surrounding EnumMembers in the source are omitted from the emitted JS.
CC @nicolo-ribaudo @romulocintra
This PR doesn't have any linked issues. Please open an issue that references this PR. From there we can discuss and prioritise.
Looks like you're introducing a change to the public API surface area. If this includes breaking changes, please document them on our wiki's API Breaking Changes page.
Also, please make sure @DanielRosenwasser and @RyanCavanaugh are aware of the changes, just as a heads up.