假设我有一个数字枚举:
const enum EStatus {
Busy = 0,
Available = 1,
Away = 2
}
Run Code Online (Sandbox Code Playgroud)
当我执行以下操作时,TypeScript不会抱怨:
const status: EStatus = 4
Run Code Online (Sandbox Code Playgroud)
但是,如果我有一个字符串枚举:
const enum EDayOfWeekend {
Saturday = "Saturday",
Sunday = "Sunday"
}
Run Code Online (Sandbox Code Playgroud)
然后当我尝试执行以下操作时,TypeScript会抱怨:
const dayOfWeekend: EDayOfWeekend = "Tuesday"
Run Code Online (Sandbox Code Playgroud)
我本来希望 TypeScript 要么允许两者都允许,要么不允许两者都允许。IMO应该不会允许超过所定义的值以外的任何使用,甚至更好地执行,你只能使用枚举本身初始化变量,例如
const dayOfWeekend = EDayOfWeekend.Saturday
Run Code Online (Sandbox Code Playgroud)
我很想知道为什么 TypeScript 中存在这种不一致,以及它是否是有意设计的。