Typecript中的枚举类型
Enum 是typescript语言的最新特征之一。它是一种数据类型,可以容纳相同或不同类型的值。它将类似的值归为一个实体。
Enum 所有其他编程语言如Java和Microsoft Net都有这个特性。Javascript没有 的功能。Enum
枚举是一个用于构造枚举对象的关键字。
你可以查看我关于typescript Enum object 的其他文章。
普通枚举实例
enum Status {
Done,
Error,
Exception,
}
这个简单的普通Enum例子,在javascript转码过程中会发出以下表格
var Status;
(function (Status) {
Status[Status["Done"] = 0] = "Done";
Status[Status["Error"] = 1] = "Error";
Status[Status["Exception"] = 2] = "Exception";
})(Status || (Status = {}));
console.log(Status.Done);
在枚举的常量中声明常量
declare const enum Status {
Done,
Error,
Exception,
}
上述代码在javascript编译过程中不会发出任何代码。同样的情况也适用于声明enum或const enum的情况。
枚举数例子
如果Enum中的值没有被指定任何类型,它将被视为一个数字枚举。
请看下面的例子
enum WeekDay {
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
}
conso.log(WeekDay.Sunday) - outputs 0
conso.log(WeekDay.Wednesday) - outputs 3
conso.log(WeekDay.Saturday) - outputs 6
我们声明的Enum有7个值。默认情况下,Enum的值被当作数字处理。你可以只明确地设置数字 这就是普通的Enum例子。编译器产生了以下的javascript代码
var WeekDay;
(function (WeekDay) {
WeekDay[WeekDay["Sunday"] = 0] = "Sunday";
WeekDay[WeekDay["Monday"] = 1] = "Monday";
WeekDay[WeekDay["Tuesday"] = 2] = "Tuesday";
WeekDay[WeekDay["Wednesday"] = 3] = "Wednesday";
WeekDay[WeekDay["Thursday"] = 4] = "Thursday";
WeekDay[WeekDay["Friday"] = 5] = "Friday";
WeekDay[WeekDay["Saturday"] = 6] = "Saturday";
})(WeekDay || (WeekDay = {}));
字符串枚举实例
字符串的枚举就像数字一样。这在编译时有初始化的值。
enum Month {
Jan='January',
Feb = 'February',
Mar='March'
}
console.log(Month.Jan) -- returns January
Typescript Enum的例子
将通过使用枚举关键字的不同例子进行讲解。
如何遍历枚举的元素?
使用for循环,我们可以遍历Enum数据类型的所有元素。
for (let month in Month) {
const myMonth: Month = Month[month] as Month;
console.log(myMonth)
}
output is
January
February
March
如何在typescript中把字符串转换为枚举?
很容易将String 转换为Enum ,或将Enum 转换为String ,如示例代码中所述,Enumeration默认返回数字索引。你可以通过索引查找相应的Enum,并将其作为字符串类型返回。
enum Month {
Jan,
Feb ,
Mar
}
// To String
var selectedMonth: string = Month[Month.Jan];
console.log(selectedMonth) // return the Enum in String
// To Enum / number
var month : Month = Month[selectedMonth];
console.log(selectedMonth) // String to Enum Object
如何将Enum转换为数组对象?
转换为数组对象非常容易_首先,创建一个空的数组,你只需要遍历枚举并将这些值推送到枚举中。
let map: {code: string; name: string}[] = [];
for(var n in Month) {
map.push({code: Month[n], name: n});
}
console.log(map);
总结
总结一下,你学到了Typescript enum和带解释的例子。