The key thing to understand is that the values of string enums are opaque.
The intended use case for a string enum is that you don’t want other code to know or care what the literal string backing MyKeyType.FOO is. This means that you won’t be able to, say, pass the literal string "bar" to a function accepting a MyKeyType — you’ll have to write MyKeyType.BAR instead.