ts-04 枚举类型

107 阅读1分钟

简介

  • 在js是没有 枚举 这个概念的
  • ts中可以通过 enum 来定义枚举类型
  • js定义对象方式
    •  const names = {
         0: '亚索',
         1: '瑞雯',
         2: '妖姬',
       }
      
  • ts中定义枚举
    •   enum Names {
          ys,
          rw,
          yj,
        }
        console.log(Names.yj) // 会输出索引  2
      

增长枚举

  •  enum Names {
        ys = 1,
        rw,
        yj,
      }
    console.log(Names.yj) // 3
    

字符串枚举

  •  enum Names {
        ys = '亚索',
        rw = '瑞雯',
        yj = '妖姬',
      }
    console.log(Names.rw)
    

异构枚举

  • enum Names {
        ys = '亚索',
        rw = 3,
      }
    console.log(Names.rw)
    

接口枚举

  •   enum Obj {
        a,
        b,
      }
    
      interface Person {
        name: Obj.b
      }
    
      let p1: Person = {
        name: Obj.b,
      }
      console.log(p1)
    

const枚举

  • 使用 const 的枚举编译后是常量
    •   const enum Msg {
          a,
          b,
        }
      
        let num: number = 0
      
        if (num === Msg.a) {
        }
      
    • 使用 tsc index 编译后
    • image.png
  • 普通声明 编译完成后 是对象
    •  enum Msg {
          a,
          b,
        }
        let num: number = 0
      
        if (num === Msg.a) {
        }
      
    • 编译后
    • image.png

反向映射

  •   enum Msg {
        a,
        b = '字符串', // 字符串是不支持反向映射的
      }
      let a: number = Msg.a
      let key = Msg[a]
      console.log(a, key)