Typecript:类型描述枚举教程及实例

156 阅读2分钟

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编译过程中不会发出任何代码。同样的情况也适用于声明enumconst 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和带解释的例子。