在TypeScript中掌握枚举:关于如何使用它的指南
typescript是javascript的一个超集,可以帮助您编写类型安全的代码。
使用typescript,您将能够更早地捕捉错误并修复它们。 typescript的一个重要特性是enums。 enum是typescript中的一种流行构造,可以帮助您编写更安全的代码。
在本文中,我将解释enums,如何创建和使用它们,以及其他需要考虑的事项。
什么是enum?
enum是枚举类型的简写。枚举数据类型由该类型的变量可以取的不同值来定义。它可以取的不同值通常称为成员或元素。
在本文中,我们将称它们为成员。enums不仅仅是typescript的一个特性。相反,枚举类型也存在于其他编程语言中并被使用。使用enums可以在typescript程序中提供更好的类型安全性。
也可以阅读: 作为开发者,需要了解的顶级typescript库和运行时
为什么使用enums?
enums帮助您指定变量可以容纳的值。它们还帮助您指定函数参数可以接受的值。这有助于确保开发者始终为变量和函数参数提供预期的值。这将有助于消除错误,使您编写更安全和更健壮的代码。
使用enums的先决条件
在本教程中,我将演示如何在typescript中使用enums。要跟随本教程,您需要能够运行和执行typescript代码。
因此,您需要安装nodejs以执行javascript代码。如果您尚未安装typescript,下面的视频将指导您如何安装。
或者,如果您想要立即编译和执行脚本,可以使用ts-node
。虽然在本文中我将使用这种方法,但对于较大的项目,我建议安装typescript。要使用ts-node
执行脚本,使用以下命令:
npx ts-node
本文还假设您熟悉javascript和基本的typescript。
使用简单的enum
如何创建一个简单的enum
在typescript中,可以使用enum关键字创建enums。接着是枚举的名称,然后是枚举所包含的成员的列表。以下是一个示例,我们声明了一个枚举,表示指南针上的四个基本方向。
enum direction {
north,
east,
south,
west
}
请注意,枚举中的成员周围没有引号-它们不是字符串。
如何使用一个简单的enum
使用以下方式将枚举值分配给变量:
const heading: direction = direction.north;
因为我们在声明时将变量赋值,typescript可以推断出数据类型。因此,我们不需要断言类型。相反,我们可以这样写:
const heading = direction.north;
要找到heading变量的值,我们可以使用console.log进行打印。
console.log(heading);
执行结果如下:
0
变量 heading 包含了值 0,即使我们将值 direction.north 赋给它。这是因为每个成员在创建枚举时都会被分配一个数值。第一个成员被分配为 0,第二个为 1,以此类推。下面是一个演示:
console.log(direction.north, direction.east, direction.south, direction.west)
因此,你可以通过断言 heading 变量等于零来检查它是否包含 north。例如:
// 断言相等
let isnorth = heading == 0;
// 打印结果
console.log(isnorth);
如前面所示,direction.north 等于 0。所以,我们可以检查 heading 是否等于 direction.north,而不是等于零。
// 检查方向是否为 north
isnorth = heading == direction.north;
// 打印结果
console.log(isnorth);
上述内容非常有用,很可能是你使用枚举值的方式。然而,你还可以做更多的事情,稍后你将看到。下一节将讨论如何使用自定义值。
使用自定义值
当你创建一个枚举时,typescript 会自动为成员分配从零开始的数值。但是,你可能希望成员具有自定义值而不是默认值,这种情况下,你可以进行赋值。例如:
enum starrating {
verypoor = 1,
poor = 2,
average = 3,
good = 4,
excellent = 5
}
或者,你可以这样做:
enum starrating {
verypoor = 1,
poor,
average,
good,
excellent
}
在这种情况下,第一个成员的值将被分配为 1。后续的选择将从前一个选择中自动递增。因此,poor 的评分为 2,average 为 3,以此类推。
枚举中的选择并不总是具有数值,稍后你将看到。然而,具有数值的选择将行为类似于普通数值。
console.log(typeof starrating.average);
这将打印 "number"
。这意味着你可以对其进行数字操作,包括进行比较,例如:
console.log(starrating.excellent > starrating.average)
这将打印 "true"
。
使用字符串作为自定义值
如前所述,枚举选择可以具有字符串值,而不仅仅是数字。下面是如何实现这一点:
enum choice {
redpill = "know everything"
bluepill = "know nothing"
}
在这种情况下,枚举选择的行为与前面的选择相似。然而,由于值是字符串,你可以执行字符串操作,而不是像前面的示例中那样进行数字操作。
异构枚举
你也可以混合使用字符串和数字值。虽然这种做法不被鼓励并且没有太大用处,但仍然是可能的。
enum mixed {
first = "string"
second = 2
}
最后的话
在这篇文章中,我们介绍了typescript中的枚举是什么以及它们的重要性。此外,我们还介绍了枚举成员可以具有的不同类型的值。
接下来,查看我们的文章:type vs. interface in typescript。