1. You can define enum like `const enum A {...}` and they will not have runtime representation.
Additionally, const enums DO NOT have an associated type. That is a problem in libraries, since users cannot reuse the type definition around (it back ports to a string or a number)