小编Mar*_*ark的帖子

TypeScript 中的数字枚举允许任何数字,而字符串枚举不允许

假设我有一个数字枚举:

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 中存在这种不一致,以及它是否是有意设计的。

enums typescript

5
推荐指数
1
解决办法
404
查看次数

标签 统计

enums ×1

typescript ×1