枚举理论
What are Enums in Typescript
Enums
在 typescript 中与 javascript 对象非常相似,实际上,当您通过 typescript 编译器运行代码时,枚举会被编译为 javascript 对象。
在我们使用枚举的任何场景中,我们都可以使用普通对象。但是当我们想要通知阅读我们代码的人我们代表一组非常密切相关的值时,枚举很有用。
示例
enum ShirtSizes { Small = 'S', Medium = 'M', Large = 'L', } function printSize(size: ShirtSizes) { console.log(`Size is ${size}`); } // printSize('A'); // Error - 'A' is not assignable to parameter of type ShirtSizes // printSize('S'); // Error - 'S' is not assignable to parameter of type ShirtSizes printSize(ShirtSizes.Small); // `Size is S`
在上面的代码片段中,我们有 ShirtSizes 枚举 – 我们预先知道所有值并且密切相关。通过使用 ,enum
我们告知读者我们的代码,我们的应用程序只涉及 3 种类型的衬衫尺码 –
S
、M
和L
。
请注意,当我们创建一个时,enum
我们也在代码中创建了一个新类型 –
ShirtSizes
。该函数printSize
采用枚举类型的参数ShirtSizes
,因此我们只能将三个可能值之一作为参数传递给它。
不指定值的枚举
enum
如果您不关心这些值,您也可以定义一个而不为键指定具体值。
enum ShirtSizes { Small, Medium, Large, }
在上面的代码片段Small
中初始化为 0,初始化为Medium
1 等等。您还可以为索引定义一个起点:
enum ShirtSizes { Small = 1, // <-- 1 Medium, // <-- 2 Large, // <-- 3 }
何时使用
当我们提前知道一小组值时,我们会使用枚举,这些值彼此密切相关。
例如电子邮件的状态:
enum EmailStatus { Read = 'READ', Unread = 'UNREAD', Draft = 'DRAFT', }
现在我们已经向任何阅读我们代码的人发出信号,表明我们的应用程序只关注电子邮件的 3 种可能状态。