TypeScript枚举声明和合并
来自菜鸟教程
这是关于 TypeScript 中声明合并的第二篇文章。 在 上一篇文章 中,我们查看了 声明合并 是什么,并从接口开始。 在这篇文章中,我们将看看如何合并枚举。
有关枚举的介绍以及它们为何有用,您可以阅读这篇文章。
让我们开始吧:
enum Department { IT, Marketing } enum Department { HR }
在我们上面的代码中,由于两个枚举具有相同的名称,Department
,TypeScript 应该能够合并它们,对吧? 好吧,没那么快! 如果我们要这样保留它,这实际上会在第二个枚举声明中引发错误。 错误显示:In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element.
这意味着,如果未指定,枚举元素将自动分配值。 因此,第一个 Department
枚举中的 IT
被赋值为 0
,Marketing
被赋值为 1
。 在第二个 Department
中,由于 HR
是该枚举中的第一个元素,因此它也被分配了 0
的值。 合并时,IT
和 HR
都将具有 0
的值,因此这是不允许的错误。
为了解决这个问题,我们可以为枚举中的第一个元素指定一个值。 如果未指定,枚举中的后续元素的值将增加一。
enum Department { IT = 1, Marketing // has a value of 2, that is 1 + (IT value) } enum Department { HR // has an automatically assigned value of 0 } console.log(Department[1]) // IT console.log(Department[2]) // Marketing console.log(Department[0]) // HR
通过将 1
的值指定为 IT
,当 HR 被自动赋值为 0
的值时,不会导致任何错误,因为没有其他元素具有该值。
当然,我们也可以为所有元素分配特定的值。
enum Department { IT = 5, Marketing = 3 } enum Department { HR = 8 } console.log(Department[5]) // IT console.log(Department[3]) // Marketing console.log(Department[8]) // HR
就是这样。 😎😎