Why does the following compile in TypeScript?
enum xEnum {
X1,X2
}
function test(x: xEnum) {
}
test(6);
Shouldn\'t it throw an error? I
No, it shouldn't. There is no type casting here, the base type behind them all is the same, integer.
typescript enum type checking works fine
Your complaint is about range value which, in this case, has nothing to do with type checking.
enum is a flexible set of constants
enum xEnum {X1=6, X2} // ruins it for test(0)