简体   繁体   English

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

[英]How to check if given enum is string based or numeric in Typescript

I have two enums which are defined like this:我有两个枚举,它们的定义如下:

enum Ed {
  up,
  down,
  left,
  right,
}

//or 

enum Es {
  A = "a",
  B = "b",
  C = "c",
}

So I need a function isStringEnum which for isStringEnum(Ed) or isStringEnum(Ed.up) will return false.所以我需要一个 function isStringEnum对于isStringEnum(Ed)isStringEnum(Ed.up)将返回 false。 For isStringEnum(Es) or isStringEnum(Es.A) will return true.对于isStringEnum(Es)isStringEnum(Es.A)将返回 true。

Thanks谢谢

This should do the trick:这应该可以解决问题:

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 操场

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM