TS中文文档中关于枚举的这句话到底在说啥?

摘自 数字枚举

数字枚举可以被混入到计算过的和常量成员(如下所示)。 简短地说,不带初始化器的枚举或者被放在第一的位置,或者被放在使用了数字常量或其它常量初始化了的枚举后面。 换句话说,下面的情况是不被允许的:
enum E {
    A = getSomeValue(),
    B, // error! 'A' is not constant-initialized, so 'B' needs an initializer
}

太绕了,有更简单好理解的解释吗?

阅读 2.5k
2 个回答

枚举的key不指定值,那就是从0开始自增的。

如果中间某个key指定了数字,比如100,那么下一个key就是101(没有指定value的话)。

如果中间某个key指定了非数字,那么下一个key就没办法自增了,需要用户手动指定value。


const ONE_HUNDRED = 100;

enum Demo {
  // a === 0
  a,
  // b === 1
  b,
  c,
  d = ONE_HUNDRED,
  // 因为d是常量,所以 e 必须指定,不然报错
  e = 1000,
  // 继续自增,f = 1001
  f,
}

综合签名的上下文,如果你把这个注释翻一下,就容易理解了。
clipboard.png

推荐问题