TS学习笔记03-枚举类型

    技术2022-07-11  137

    目录

    一个js判断角色的例子数字枚举字符串枚举异构枚举枚举成员常量枚举用枚举来写第一个例子

    一个js判断角色的例子

    function initRole(role){ if(role === 1 || role ===2){ // do sth } else if(role === 3 || role == = 4){ // do sth } else { // do sth } }

    此方法来判断角色的权限来做一些不同的操作,但有两个问题。

    可读性差,你得记住每个数字代表角色可维护性差,硬编码,牵一发动全身。

    ts中的枚举类型,就可以比较好的解决这一问题。

    数字枚举

    enum Role { user, // user = 1 admin, superAdmin, owner } console.log(Role.user) console.log(Role)

    也可以给枚举类型赋上初始值。如上面 user =1 , 后面的值就会跟着排序。

    字符串枚举

    // 字符串枚举 enum Message { Success = '成功了', Fail = '失败了' } console.log(Message.Success) console.log(Message)

    字符串枚举不会反向映射,因此得不到数字。

    异构枚举

    // 异构枚举Y enum Any { x, y = 'yes' } console.log(Any.x) console.log(Any)

    但是这里容易产生混淆,所以不建议使用。

    枚举成员

    枚举成员的值,是不允许修改的,如图显示,他是只读属性。 其中成员又分为 常量成员 和 需要被计算的成员(即非常量的表达式,他不会在编译阶段运算,而是在执行阶段运算),同时在computed后面的成员,必须得赋初始值,不然会如上图报错。

    常量枚举

    用const声明的枚举,就是常量枚举,特性是在编译阶段会被移除。

    // 常量枚举 const enum Month { Jan, Feb, Mar } let month = [Month.Jan, Month.Feb, Month.Mar] console.log(month)

    作用是 当我们不需要一个对象,而需要一个对象的值的时候,就可以用常量枚举。这样可以减少我们在编译环境时的代码。

    用枚举来写第一个例子

    enum Role { user = 1, admin, superAdmin, owner } function initRole(role:number){ if(role === Role.user || role === Role.admin){ // do sth } else if(role === Role.superAdmin || role === Role.owner){ // do sth } else { // do sth } } initRole(1)
    Processed: 0.013, SQL: 9