typeScript enum的使用

1.首先看一个官网的例子

​
enum Color {Red, Green, Blue}
let c: Color = Color.Green;

​console.log(c) // 1

enum Color {Red = 1, Green, Blue}
let c: Color = Color.Green;

console.log(c) // 2

enum Color {Red, Green=3, Blue}
let a: Color = Color.Red;
let b: Color = Color.Green;
let c: Color = Color.Blue;

console.log(a, b, c) // 0, 3, 4

上面的例子,默认情况下,从从0开始为元素编号,然后递增。

(1)所以上面的第一个c就是1

(2)也可以手动的指定成员的数值,那么这个枚举值就是所赋的值,后面枚举项的值就是从它紧邻前面哪个枚举值递增1理解这句话上面的第二个c就是2

(3)通过(2)中规则,看下第三个a=0(默认的0)、b=3(手动赋的值)、c=4(后面枚举项的值就是从它紧邻前面哪个枚举值递增1)

重点:上面的规律只适合number

2.如果是字符串:

enum Color {
    number1,
    number2,
    Red = 'red',
    Green = 'green',
    blue = 'blue',
}

console.log(Color.number1,Color.number2,Color.Red) // 0,1,red,bule

前面两个输出是0,1,这是默认值,后面两个的是手动赋值。

再看下面这种情况

enum Color {Pul, Red = 'red', Green='green', num} // 提示错误

console.log(Color.Pul, Color.Green, Color.num); // 0,green,undefined

enum Color {Pul, Red = 'red', Green='green', num1=1, num2=2} // success

console.log(Color.Pul, Color.Green, Color.num1, Color.num2); // 0,green,1,2

从上面可以看出如果如果没有手动赋值的紧邻前面的那个值,是字符串,ts中会提示错误,但是即使枚举中即使有字符串,但是紧邻前面那个枚举值是number,这个没手动赋值的值会是前面紧邻那个枚举值递增1

3.再看

const getNumnber = ():number => {
  return 1;
}
enum Color {sn,blue=getNumnber(),sn1} // error
enum Color {sn,blue=getNumnber(),sn1=1,sn2} // success

如果是有函数的话,和上面的字符串那个类似

4.再看

const getNumnber = ():number => {
  return 1;
}
enum Color {sn,blue=getNumnber(),red='red'}// error

这个会error是因为,如果有enum中字符串,就不能使用函数赋值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值