TypeScript———枚举

枚举

在 TS 中可以通过枚举定义一些带名字的常量。

数字枚举

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

这段代码定义了一个名为 Direction 的枚举,其中 Up 初始值为1,则其他成员会依次递增 2 3 4。
需要注意的是,如果不给成员初始化,默认会从1开始递增。

使用枚举:

enum Response {
	No = 0,
	Yes = 1
}

console.log(Response.Yes) // 输出 0

字符串枚举

不同于数字枚举的自动递增初始化,字符串枚举需要自行初始化成员的值。
例如:

enum Direction {
	Up = "UP",
	Down = "DOWN",
	LEFT = "LEFT",
	Right = "RIGHT"
}

异构枚举

即枚举内部可以混合使用字符串和数字成员。
例如:

enum StringAndNumber {
	No = 0,
	Yes = "YES"
}

计算和常量成员

计算和常量成员是指在一定情况下,枚举会对成员进行一定的计算初始化过程。
例如:

enum InitData {
	initData
}

// 此时initData会初始化为0

还有一些其他情况,这里就不一一列举,有兴趣的同学可以去官网阅读

联合枚举与枚举成员

字面枚举成员就是一种特殊的非计算的常量枚举成员的子集。
字面枚举成员指不带有初始值的常量枚举成员,或被初始化为:任何字符串字面量、任何数字字面量、应用了一元-符号的数字字面量。

  1. 使用枚举作为类型。
enum ShapeKind {
	Circle, Square
}

interface Circle {
	kind: ShapeKind.Circle;
	radius: number
}

interface Square {
	kind: ShapeKind.Square;
	sideLength: number;
}

let c: Circle = {
	kind: ShapedKind.Square, // 报错,因为定义的Circle是指定了ShapeKind.Circle的值而不是ShapeKind.Square的值
	radius: 100
}

运行时的枚举

枚举也是一个对象。
例如:

enum E {
	X, Y, Z
}

function fn(obj: { X: number })

fn(E) // fn函数的类型检测会通过 因为E.X是numebr

反向映射

枚举不仅提供了可以获取枚举的值,还可以通过赋值获取枚举的成员的名称。
例如:

enum Enum {
	A
}
let a = Enum.A
let nameOfA = Enum[a] // 此时nameOfA为A

const枚举

即用 const 关键字声明枚举。
例如:

const enum A {
	A
}

外部枚举

外部枚举用于描述已存在的枚举类型的形状,而外部枚举和内部枚举的一个重要区别就是,在正常的枚举里,没有初始化的成员会被当成常数成员,对于非常数的外部枚举而言,没有初始化方法时被当作需要计算的成员。
例如:

declare enum Enum {
	A = 1,
	B,
	C = 2
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值