typescript(5):枚举

枚举

  1. 数字枚举

    // up使用的初始为1,其余的成员自动增长
    enum direction {
        up = 1,
        down,
        left,
        right
    }
    // 不使用初始化器,自增长,初始值为0
    // 枚举成员的值都是不同的
    
  2. 字符串的枚举

    在字符串枚举里,每个成员都必须用字符串字面量,或另一个字符串枚举成员进行初始化

    enum direction {
        up="up",
        down="down",
        left="left",
        right="right"
    }
    
  3. 异构枚举

    枚举可以混合字符串和数字成员

    enum mix {
        no = 0,
        yes = "yes"
    }
    
  4. 计算的和常量成员

    每个枚举成员都带有一个值,它可以是常量或计算出来

    // 枚举的第一个成员且没有初始化器,这种情况下被赋值为0
    enum E { x }
    // 不带初始化器且它之前的枚举成员是一个数字常量,在此基础上+1
    enum E2 = {
        x: 1,
        y,
        z
    }
    // 
    
  5. 联合枚举与枚举成员的类型

    存在一种特殊的费计算的常量枚举成员的子集:字面量枚举成员。字面量枚举成员是指不带有初始值的常量枚举成员

    enum kinds {
        circle,
        square
    }
    interface circle {
        kind: kinds.circle
    }
    interface square {
        kind: kinds.circle
    }
    
  6. 运行时的枚举

    枚举是在运行时真正存在的对象

    enum E {
        x, y, z
    }
    
    function f(obj: {x: number}){
        return obj.x
    }
    f(E)
    

    反向映射:从枚举值得到枚举名字

    enum Enum {
        A
    }
    
    let a = Enum.A
    let nameOfA = Enum[a]  // 'A'
    

    const 枚举:为了避免在额外生成的代码上的开销和额外的非直接的对枚举成员的访问

    const enum Enum {
        A = 1,
        B = A * 2
    }
    
  7. 外部枚举

    外部枚举用来描述已经存在的枚举类型的形状

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

    外部枚举和非外部枚举之间有一个重要的区别,在正常的枚举里,没有初始化方法的成员被当成常数成员。 对于非常数的外部枚举而言,没有初始化方法时被当做需要经过计算的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值