TypeScript 枚举声明与合并

这是在TypeScript中关于声明合并的第二篇文章. 在 前篇文章中,我们研究了 声明合并是什么,并开始了界面。

為什麼你們要把它們當作一件好事呢?你們要把它們當作一件好事。

让我们开始吧:

1enum Department {
2  IT, 
3  Marketing
4}
5
6enum Department {
7  HR
8}

在我们上面的代码中,既然两个 enum 都有相同的名称,‘Department’,TypeScript 应该能够合并它们,对吗? 好吧,不是那么快! 这实际上会在第二个 enum 声明中引发错误,如果我们要这样留下它,错误写道:`在具有多个声明的 enum 中,只有一个声明可以为其第一个 enum 元素省略一个初始化器。

这意味着, enum 元素会自动分配值,如果没有指定,所以在第一个部门enum 中IT会分配值为0,而营销会分配值为1。在第二个部门中,由于HR是该项中的第一个元素,它也会分配值为0

为了解决这个问题,我们可以为我们的 enum 中的第一个元素指定一个值,而 enum 中的后续元素则将其值增加一个,如果不指定。

 1enum Department {
 2  IT = 1, 
 3  Marketing // has a value of 2, that is 1 + (IT value)
 4}
 5
 6enum Department {
 7  HR // has an automatically assigned value of 0
 8}
 9
10console.log(Department[1]) // IT
11console.log(Department[2]) // Marketing
12console.log(Department[0]) // HR

通过将值1指定为IT,当HR自动分配值为0时,它不会导致任何错误,因为没有其他元素具有该值。

当然,我们也可以将特定值分配给所有元素。

 1enum Department {
 2  IT = 5, 
 3  Marketing = 3
 4}
 5
 6enum Department {
 7  HR = 8
 8}
 9
10console.log(Department[5]) // IT
11console.log(Department[3]) // Marketing
12console.log(Department[8]) // HR

就这样吧 ↓↓

Published At
Categories with 技术
Tagged with
comments powered by Disqus