TypeScript 中的枚举
TypeScript 中的枚举
在 TypeScript 中,枚举是一组命名常量。 尽管它是可选的,但枚举应为一组命名的相关常量。 TypeScript 支持传统的枚举和基于字符串的枚举。
1)基于字符串的枚举
让我们从基于字符串的枚举开始,因为与传统枚举相比,它们是推荐的方法。 始终使用基于字符串的枚举,直到您有充分的理由选择传统的枚举为止。
1.1)语法
枚举语法与其他语言非常相似,例如 Java。
enum AppStatus {
ACTIVE = 'ACTIVE',
INACTIVE = 'INACTIVE',
ONHOLD = 'ONHOLD'
}
查看 JavaScript 中生成的代码。 它具有一个生成的查找表,如下所示。
var AppStatus;
(function (AppStatus) {
AppStatus["ACTIVE"] = "ACTIVE";
AppStatus["INACTIVE"] = "INACTIVE";
AppStatus["ONHOLD"] = "ONHOLD";
})(AppStatus || (AppStatus = {}));
1.2)访问枚举成员值
使用Enum.member
或Enum['member']
格式访问枚举成员值。
enum AppStatus {
ACTIVE = 'ACT',
INACTIVE = 'INACT',
ONHOLD = 'HLD'
}
AppStatus.ACTIVE //ACT
AppStatus.INACTIVE //INACT
AppStatus['ACTIVE'] //ACT
//Never use numbers with string based enums
AppStatus[0] //undefined
1.3)作为函数参数的枚举
要在函数中传递枚举,请声明枚举本身的参数类型。
enum AppStatus {
ACTIVE = 'ACT',
INACTIVE = 'INACT',
ONHOLD = 'HLD'
}
function checkStatus(status: AppStatus): void {
console.log(status);
}
checkStatus(AppStatus.ONHOLD);
2)传统的基于数字的枚举
尽管不建议这样做,但您可能会遇到需要的情况。 因此,让我们快速学习。
2.1)语法
语法很简单,很老套。 由于尚未初始化值,因此,转译器会生成查找表,并以数组索引的方式分配值(从零开始,然后为每个成员加一)。
enum AppStatus {
ACTIVE, //0
INACTIVE, //1
ONHOLD //2
}
如果要以其他任何数字开头,则将其分配给第一个枚举成员。 接下来的所有成员将通过一个一个的递增来获取值。
enum AppStatus {
ACTIVE = 5, //5
INACTIVE, //6
ONHOLD //7
}
2.2)访问枚举成员值
由于这些是基于数字的枚举,因此您也可以使用enum[index_number]
格式以及Enum.member
或Enum['member']
格式。
enum AppStatus {
ACTIVE,
INACTIVE,
ONHOLD
}
console.log(AppStatus.ACTIVE); //0
console.log(AppStatus['INACTIVE']); //1
console.log(AppStatus[0]); //ACTIVE
2.3)作为函数参数的枚举
要在函数中传递枚举,请声明枚举本身的参数类型。
enum AppStatus {
ACTIVE,
INACTIVE,
ONHOLD
}
function checkStatus(status: AppStatus): void {
console.log(status);
}
checkStatus(AppStatus.ONHOLD); //2
请在最后一个语句中查看打印的'2'
值。 在大多数情况下,它不是很有用,因此,首选并推荐基于字符串的枚举。
将我的问题放在评论部分。
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果