typescript - 检查字符串是否在 ENUM typescript 中

标签 typescript

我有一些像这样的emun

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

和一些const language ='de'; 我只需要检查 enum constraint const 语言,我知道我可以用数组做 包含但如何检查ENUM?

我也知道我可以这样检查

if (type in Languages) {
}

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

最佳答案

您可以使用 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

TypeScript playground

这是有效的,因为 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);
.as-console-wrapper {
  min-height: 100%;
}

关于typescript - 检查字符串是否在 ENUM typescript 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68820232/

相关文章:

javascript - 个人资料图片未跨组件更新 Angular 5

javascript - 如何将 TS 模块导入或要求到 CommonJS 文件中?

javascript - 在 typescript 中输入 args

html - 当鼠标输入时,它会在所有元素名称上显示图标

javascript - 是否有任何 Typescript 表达式 `A` 使得 `A` 的真实性与 `!!A` 不同?

javascript - 在 Angular 中迭代 JSON 时出现问题

typescript 构造函数重载,期望参数少于给定

javascript - 哪个是 Angular2/Typescript For Windows 的最佳 IDE

javascript - 如何使用 qunit 在 TypeScript 中将函数参数声明为 "QUnit"类型?

angular - 即使指定了类型,在 Typescript 中创建新文件也会返回空类型