Typescript的Enums

432 阅读2分钟

大家好,这是一个更文挑战。这是我参与8月更文挑战的第8天,活动详情查看:8月更文挑战

ts为js引入了一个新的概念Enums,我们一起看看怎么使用的吧!!

Enums:全称Enumerations

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

注意: ts支持数字字符串的枚举

定义enums变量: 以enums关键字开头,变量名(首字母大写)

enum Pet {
    Dog,
    Cat,
    Goldfish
}

现在,默认的Dog的值为0,Cat的值为1,...以此类推, 默认值是以自增长的

1. 现在要是给Dog一个默认值,那后面的值会是什么呢?

enum Pet {
    Dog=4,
    Cat,
    Goldfish
}

现在 Dog的值为4,Cat的值为5,...以自增长的方式给后面的赋值

2. 要是不想让他们的值是自增长的呢? 可以给每个赋一个值

enum Pet {
    Dog=4,
    Cat=2,
    Goldfish=34
}

现在 Dog的值为4,Cat的值为2Goldfish的值为34都为数字类型

3. Enum的值也可以是都是字符串类型

enum Pet {
    Dog="hahah",
    Cat=“lalal”,
    Goldfish=“enenen”
}

现在 Dog的值为hahah,Cat的值为lalalGoldfish的值为enenen都为字符串类型

4. Enum的值可以字符串和数字混合用吗?理论上可以,但是不建议

enum Pet {
    Dog="hahah",
    Cat=44,
    Goldfish=“enenen”
}

上面这种做法不建议

4. Enum的值还可以是函数,但是只有一个函数的时候要放在最后一个,否则会出错

注意事项: 函数要有返回值

getName(){
    return 22
}
// 下面这个是错❌的
enum Pet {
    Dog=getName(),
    Cat,
    Goldfish
}
// 下面这个是对的
enum Pet {
    Dog,
    Cat,
    Goldfish=getName()
}

现在,默认的Dog的值为0,Cat的值为1,Goldfish的值为22

5. enum可以计算

enum Animal {
    Head,
    Eye,
    Leg
}

enum People {
   Head: Animal.Head,
   Eye:1+1,
   Leg:2*2,
   Mouth:Head
}

Animal里面的值我们都知道分别是:Head的值为0,Eye的值为1,Leg的值为2,那People的值分别是什么呢?Head的值为0,Eye的值为2,Leg的值为4Mouth的值为0

总结

  1. 为什么使用enum?

Enums使得代码更加语义话,能够被更好的维护

  1. 什么时候使用?

变量的值在一个固定的范围区间内,比如:红绿灯,只有3种。年级,1-9年级。键盘上的上下左右,只有4个按键...,诸如此类的,有固定范围的都可以定义为enum类型

希望各位看官喜欢这篇关于ts的enums入门的文章!!!