一、枚举类型介绍
1、枚举类型
如果接触过其它语言或者TypeScript,大概对于枚举类型有一些了解。枚举类型是什么,在计算机学术界的定义繁奥且复杂,具体请参考百度百科-枚举,在这里我将其定义理解为:枚举是一种定义成员与值的映射关系的有穷序列集的数据类型。当然,在实际应用中能够对其理解的更加深入。
2、ECMAScript中的枚举类型
在ECMAScript2015标准中尚未实现支持原生的枚举类型,但enum
一直作为一个保留关键字而存在,将来有望实现原生支持。但是TypeScript作为JavaScript的超集,提前实现了对枚举类型的语法支持。下面的实例均是以TypeScript语法为例的。
3、枚举类型的特性
(1)自增性
enum Direction {
Up,
Down
}
console.log(Direction[0]); // 输出结果“Up”
console.log(Direction[1]); // 输出结果“Down”
注释:如果不对成员进行初始化赋值,则其值将会从0开始自动递增。这种特性在实际运用中是非常有用的。
(2)映射性
enum Direction {
Up,
Down = "下"
}
console.log(Direction.Up); // 输出结果0
console.log(Direction[0]); // 输出结果0
console.log(Direction.Down); // 输出结果1
console.log(Direction["下"]); // 输出结果undefined
注释:在Typescript中,字符串枚举并不具有相互映射的特性。目前还尚不清楚为什么Typescript不支持这种特性,但我仍然认为它十分有用,比如在进行文本国际化的时候。
4、在JavaScript中使用枚举
由于ECMAScript不提供对Enum类型的原生支持,所以理所当然JavaScript也不支持Enum类型,但JavaScript却可以模拟出类似的特性来,请看下面示例:
var Direction = {
left: 0,
right: 1,
top: "上",
bottom: "下",
0: left,
1: right,
上: "top",
下: "bottom"
};
console.log(Direction.left); // 输出结果为:0,
console.log(Direction[0]); // 输出结果为:"left"
console.log(Direction["上"]); // 输出结果为:"top"
console.log(Direction["下"]); // 输出结果为:"bottom"
上述示例中的Direction对象就可以视作一个Enum类型。
网友评论