代码之家  ›  专栏  ›  技术社区  ›  husayt

如何在Typescript中检查给定枚举是基于字符串的还是数字的

  •  0
  • husayt  · 技术社区  · 3 年前

    我有两个枚举,定义如下:

    enum Ed {
      up,
      down,
      left,
      right,
    }
    
    //or 
    
    enum Es {
      A = "a",
      B = "b",
      C = "c",
    }
    

    所以我需要一个函数 isStringEnum 用于 isStringEnum(Ed) isStringEnum(Ed.up) 将返回false。对于 isStringEnum(Es) isStringEnum(Es.A) 将返回true。

    谢谢

    1 回复  |  直到 3 年前
        1
  •  1
  •   Tobias S.    3 年前

    这应该可以做到:

    function isStringEnum(e: object){
      return Object.entries(e).every(e => typeof e[1] === "string")
    }
    
    console.log(isStringEnum(Ed)) // false
    console.log(isStringEnum(Es)) // true
    

    Playground