检查字符串是否在 ENUM 打字稿中

Mio*_*vic 6 typescript

我有一些像这样的emun

export enum Languages {
  nl = 1,
  fr = 2,
  en = 3,
  de = 4
}
Run Code Online (Sandbox Code Playgroud)

有些const language ='de'; 我只需要检查枚举约束 const 语言,我知道使用数组我可以 包含但如何检查 ENUM?

我也知道我可以这样检查

if (type in Languages) {
}
Run Code Online (Sandbox Code Playgroud)

但这项工作是数字而不是字符串

Beh*_*oth 7

您可以使用Object.keys()以下命令来访问枚举键Array.prototype.includes()

enum Languages {
  nl = 1,
  fr = 2,
  en = 3,
  de = 4,
}

const language = "de";

console.log(Object.keys(Languages).includes(language)); //true
Run Code Online (Sandbox Code Playgroud)

TypeScript 游乐场

这是有效的,因为Enum当转换成 JavaScript 时,就变成了一个简单的对象:

var Languages;
(function(Languages) {
  Languages[(Languages["nl"] = 1)] = "nl";
  Languages[(Languages["fr"] = 2)] = "fr";
  Languages[(Languages["en"] = 3)] = "en";
  Languages[(Languages["de"] = 4)] = "de";
})(Languages || (Languages = {}));

console.log(Languages);
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper {
  min-height: 100%;
}
Run Code Online (Sandbox Code Playgroud)