Enums是Enumerations的缩写,是预设的常量,可以由开发人员定义以在代码的其他地方使用。
对于 Javascript 开发人员来说,枚举的概念通常是新的,但它们相对容易理解。枚举为我们正在编写的内容添加上下文。
如何定义枚举#
枚举可以使用Enum关键字在 Typescript 中定义。这是一个例子:
enum Pet {
Dog,
Cat,
Goldfish,
Skeleton
}
默认情况下,这些中的每一个都将被分配一个值。所以Dog
将是0,Cat
是1,依此类推。假设我们有一个生成宠物的函数。之前,我们可能会这样写:
// Generate a Cat
generatePet(1);
现在,我们可以为我们正在做的事情添加上下文,并使用我们的枚举列表来做到这一点:
// Generate a Cat
generatePet(Pet.Cat);
上面的代码等同于我们之前所做的,只是我们使用了我们的枚举。
所以等等..为什么要使用枚举?
您可能想知道“有什么意义? ”,这是一个有效的问题。枚举本质上允许我们为我们正在做的事情提供更多的上下文。我们可以简单地要求他们使用枚举列表,而不是让用户记住可能的宠物编号列表。这也让下一个阅读我们代码的人更好地了解我们正在尝试做什么。
数字和字符串枚举#
我们可以将枚举定义为数字或字符串。让我们稍微详细地看一下这些。
enum Pet {
Dog = 2,
Cat,
Goldfish,
Skeleton
}
上面,我们给出Dog
了一个数值 2。之后的每一项都会增加 1,所以Cat
变成 3,Goldfish
变成 4,等等,但你也可以随意定义它们:
enum Pet {
Dog = 2,
Cat = 9,
Goldfish = 15,
Skeleton = 44
}
通常我们不会混合字符串和数字以避免混淆,但我们也可以将枚举定义为完全字符串:
enum Counting {
One = "one",
Two = "two",
Three = "three"
}
来自函数的枚举值#
枚举也可以是返回值的函数。如果您只在枚举中定义一个值,则函数必须放在最后。如果将函数放在开头,则所有枚举都需要值。因此,以下会引发错误:
// This will throw an error, since the function is at the start
// So typescript assumes all will be functions
enum Counting {
One = getOne(),
Two,
Three,
}
但这不会:
enum Counting {
One,
Two,
Three = getThree(),
}
在上面One
返回 0,Two
返回 1,并Three
返回 的值getThree()
。举个例子,我们的getThree()
函数可能看起来像这样(返回值 3):
const getThree = function() {
return 3;
}
计算枚举
可以计算枚举(即计算),或者也可以引用其他枚举。例如:
enum FirstEnum {
One, // Returns "0"
Two, // Returns "1"
Three // Returns "2"
}
enum AnotherEnum {
One: FirstEnum.One, // returns FirstEnum.One, i.e. "0"
Two: 1 + 1, // Calculates and returns "2"
Three: 1 * 3, // Calculates and returns "3"
Star: One // Refers to AnotherEnum.One, returns "0"
}
结论#
枚举是typescript中为代码添加更多语义的强大方式。它们为您提供了一种好方法,让阅读您的代码的人知道您想要完成什么,从而提高您所编写内容的可维护性。它们还允许您在代码库中引用标准常量,从而使您的生活更轻松。
我们希望您喜欢这份 Typescript 枚举指南!