banner
banner
banner
NEWS LETTER

TS-枚举

Scroll down

定义一些带名字的常量

反向映射

  • 枚举是一个相互映射(赋值)的,比如数字枚举中up=1,调用时可以看到up=1,1也等于up

数字枚举

  • 默认从0开始增加,定义了初始值,从初始值开始增加
  • 使用:通过枚举的属性来访问枚举成员,和枚举的名字来访问枚举类型
1
2
3
4
5
6
enum Direction{
up = 1, //Direction.up的值为 1
left, //Direction.left的值为 2,以此类推
right,
down
}

字符串枚举

1
2
3
4
5
6
7
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT",
}
let a = Direction.Up // "UP"

异构枚举:既有数字枚举又有字符串枚举

1
2
3
4
enum YIGOU {
No = 0,
Yes = "YES",
}

联合枚举与枚举成员的类型

  • 数字、应用一元-符号的数字(如: -1)或字符串的字面量都是number,string的子集
  • 比如字符串字面量枚举=String,但String !== 字符串字面量

运行时的枚举:可以在函数中运行,不单单去定义一个常量

1
2
3
4
5
6
7
enum E {
x,y,z //定义一个枚举,里面有x,y,z,默认值为0,1,2
}
function f(obj: {x:number}){ //传一个对象,类型为number
return obj.x //返回x的值
}
f(E) //传枚举E到函数中

const 枚举:

  • 定义后不会编译,直到使用到时才会被执行,且显示的结果为[值/属性名/],而普通枚举在定义后就编译了
    1
    2
    3
    4
    5
    6
    const enum Enum {
    A = 1,
    B = A * 2
    }
    let directions = [Enum.A, Enum.B]
    var directions = [1 /* A */, 2 /* B */];

外部枚举:描述已经存在的枚举类型

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

枚举映射元组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const enumMap:IDirection  = {
"up": "UP",
"down": "DOWM",
"left": "LEFT",
"right": "RIGHT"
}
interface IDirection {
[key: string]: string
}
enum Direction {
up,
down,
left,
right,
}

console.log(enumMap[Direction[0]]) // "UP"

映射类型与条件类型

TS-高级类型的143行左右
其他文章
cover
TS-类型兼容
  • 24/11/01
  • 11:40
  • TypeScript
cover
TS-symbols和迭代器和生成器
  • 24/11/01
  • 11:40
  • TypeScript
目录导航 置顶
  1. 1. 反向映射
  2. 2. 数字枚举
  3. 3. 字符串枚举
  4. 4. 异构枚举:既有数字枚举又有字符串枚举
  5. 5. 联合枚举与枚举成员的类型
  6. 6. 运行时的枚举:可以在函数中运行,不单单去定义一个常量
  7. 7. const 枚举:
  8. 8. 外部枚举:描述已经存在的枚举类型
  9. 9. 枚举映射元组
  10. 10. 映射类型与条件类型
请输入关键词进行搜索