TypeScript学习(六)枚举
创始人
2024-05-09 09:49:16

文章目录

  • 1.定义枚举类型
  • 2.确定常量成员和计算成员
  • 3.枚举联合
  • 4.反向映射
  • 5.常量枚举
  • 6.外部枚举

1.定义枚举类型

   使用枚举我们可以定义一些带名字的常量。使用枚举可以清晰地表达意图或创建一组有区别的用例。TypeScript支持数字和基于字符的枚举。

(1)数字枚举

enum Direction {Up,Right,Down,Left
}

   以上就是一个基本的数字枚举,Up的初始值为0,后一位的枚举值在前一位的基础上+1。也可以指定初始值。

enum Direction {Up = 1,Right,Down,Left
}

   像这样,Up,Right,Down,Left的值依次是1,2,3,4。

(2)字符串枚举

   使用字符串作为枚举值时,必须为每一个枚举成员设置枚举值。因为字符串枚举没有自增长的能力,同时字符串枚举可以很好的序列化。

enum Direction {Up = "Up",Right = "Right",Down = "Down",Left = "Left"
}

(3)异构枚举

   从技术的角度上,数字和字符串枚举值可以混用,但通常不这么做。

enum State {No = 0,Yes = true
}

2.确定常量成员和计算成员

当满足以下条件时,成员被当做是常量:

  • 枚举的第一个成员且没有初始化器,这种情况下为初始值0。
  • 不带有初始化器,且前一个成员是数字常量,此时为前一个成员的值+1。
  • 使用常量枚举表达式初始化:
    • 枚举字面量(数字或字符串字面量)
    • 对之前常量枚举成员的引用
    • 带括号的常量枚举表达式
    • 一元运算符 +, -, ~其中之一应用在了常量枚举表达式
    • 常量枚举表达式做为二元运算符 +, -, *, /, %, <<, >>, >>>, &, |, ^的操作对象。 若常数枚举表达式求值后为 NaNInfinity,则会在编译阶段报错。

ps.其他情况均为需要计算得到的值

3.枚举联合

存在一种特殊的非计算的常量枚举成员的子集:字面量枚举成员。 字面量枚举成员是指不带有初始值的常量枚举成员,或者是值被初始化为

  • 任何字符串字面量(例如: "foo""bar""baz"
  • 任何数字字面量(例如: 1, 100
  • 应用了一元 -符号的数字字面量(例如: -1, -100

当所有枚举成员都拥有字面量枚举值时,它就带有了一些特殊的语义。

   首先,枚举成员可以被当做类型。

enum ShapeKind {Circle,Square,
}interface Circle {kind: ShapeKind.Circle;radius: number;
}

   其次,枚举类型本身变成了整个枚举类型成员的联合。

4.反向映射

   可以通过属性名获取枚举值,同时也可以通过枚举值获取到枚举成员的名字。

const Direction {Up,Right,Down,Left
}const up = Direction.Up;
console.log(Direction[up]); // Up

5.常量枚举

   可以使用const关键字定义常量枚举,常量枚举的好处是,不能包含计算成员。

const Direction {Up,Right,Down,Left
}

6.外部枚举

   外部枚举用来描述已经存在的枚举类型的形状。

declare enum Enum {A = 1,B,C = 2
}

相关内容

热门资讯

脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...