Typescript Enum Object.values() 返回值

2024-06-20

为什么Object.values() and Object.keys()总是同时给出键和值?

考虑以下代码:

enum Enum {
    FOO,
    BAR
}

console.log(Object.values(Enum));
console.log(Object.keys(Enum));

其输出将是:

[ 'FOO', 'BAR', 0, 1 ]
[ '0', '1', 'FOO', 'BAR' ]

为什么要这样做以及我如何只获取键和值?


这就是如何enum类型由 TypeScript 转译。

enum Enum {
    FOO,
    BAR
}

会变成

"use strict";
var Enum;
(function (Enum) {
    Enum[Enum["FOO"] = 0] = "FOO";
    Enum[Enum["BAR"] = 1] = "BAR";
})(Enum || (Enum = {}));

请注意,提供了数字键和字符串键,以便轻松映射到这两种类型或从这两种类型进行映射,使您能够执行如下操作:

const value = Enum.FOO;  // inferred type Enum.FOO
const key = Enum[value]; // inferred type string

如果您想获取仅包含数字或字符串键的数组,可以这样做:

const numericKeys = Object.keys(Enum).map(x => parseInt(x)).filter(x => !isNaN(x));
const stringKeys = Object.keys(Enum).filter(x => isNaN(parseInt(x)));

或者对于数字或字符串值(需要es2017你的图书馆tsconfig):

const numericValues = Object.values(Enum).filter(x => typeof x === "number");
const stringValues = Object.values(Enum).filter(x => typeof x === "string");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Typescript Enum Object.values() 返回值 的相关文章

  • 带有用 Typescript 编写的参数的 vuex getter

    我们可以创建一个 vuex store getter 它接受一个参数参数 如下所示 https vuex vuejs org en getters html https vuex vuejs org en getters html 我正在使
  • 将打字稿字符串转换为布尔值

    我正在尝试将字符串转换为布尔值 有几种方法可以做到这一点 一种方法是 let input true let boolVar input true 这里的问题是我必须验证输入是否正确 除了验证第一个输入然后进行转换之外 还有其他更优雅的方法吗
  • 如何重命名对象中的字段

    我正在使用 Angular 5 我有 假后端 项目数组 我的情况 我正在等待以下对象结构 id number title string 但是 后端向我发送了错误的结构 id number name string 我需要从后端接收数据 如果字
  • 如何使用 VSCode 扩展 API 启动“findInFiles”?

    我正在尝试编写一个扩展 它会自动选择光标下的单词 打开 在文件中查找 对话框 并使用该选择启动搜索 到目前为止 我已经能够让扩展程序执行除实际启动搜索之外的所有操作 我仍然需要在 在文件中查找 对话框中按 Enter 键才能实际进行搜索 这
  • Angular 10 在从不同工作区渲染组件时使用库时无法读取 null 属性“bindingStartIndex”

    我创建了一个位于我的应用程序工作区之外的 Angular Library 结果是我有两个不同的工作空间 我的第一个方法是建立我的图书馆和链接 dist与我的应用程序的文件夹 这对于 ngserve 来说效果不太好 但无论如何我在渲染我的库组
  • ES6/Typescript 导入:在一行中导入 * 和名称

    我怎样才能把它写在 1 行上 import as Express from express import Application NextFunction Request Response from express 你的开发者丹 impor
  • 如何绑定 Angular 2 表达式和 TypeScript 方法?

    我想做的是在输入名字和姓氏时显示全名 这有效 h1 Hello lastName firstName h1 这不起作用 调用类中定义的方法的正确方法是什么 这也不起作用
  • 从 API 响应动态创建 md-card

    我正在进行 API 调用并存储一堆用户配置文件 并且我希望能够为每个配置文件动态创建卡片 Angular Material Design md card 返回的配置文件数量可能会有所不同 因此这需要是动态的 这是我的组件文件 它发出 JSO
  • 解析错误:关键字“enum”被保留

    我正在用 React 编写 TypeScript 该项目是用 CRA 生成的 我用过react app配置为 eslintrc json 不过我决定使用eslint config airbnb所以我添加了它并改变了我的 eslintrc j
  • 两个项目之间的跨项目引用

    是否可以在两个 TypeScript 项目之间进行引用 假设我们有以下项目结构 Module1 ts包含 module TestModule export interface Interface1 Module2 ts包含 module T
  • NG2:angular2-webpack-starter - HMR 的目的是什么?

    我正在清理我的 angular2 项目 出于多种原因 我决定从种子开始 This one https github com AngularClass angular2 webpack starter 该种子使用HMR https webpa
  • 通用枚举类型防护

    我可以编写一个非泛型类型保护来检查给定字符串是否是字符串枚举的成员 如下所示 enum MyEnum Thing1 thing one Thing2 thing two const isMyEnum token any token is M
  • 获取打字稿中的函数名称

    我正在寻找一种方法来获取传入参数的函数名称 console clear class A test testCall fnc Function console log fnc name i want it display test here
  • 多重继承解决方法

    我试图发现一种将多个接口组合成一个抽象类的模式 目前我可以通过组合多个接口implements 但接口不能声明构造函数 当我必须引入构造函数时 我被迫使用抽象类 当我使用抽象类时 我必须重新声明整个复合接口 我肯定错过了什么吗 interf
  • 回调在 Angular2/Firebase 中生成“TypeError:这是未定义的”

    我试图了解这里发生了什么以及为什么如果我以某种方式调用函数时会收到错误 而当我以不同的方式调用函数时却不会收到错误 这是首先产生错误的方式 播放器 service ts 文件 in the Injectable i have private
  • 为什么我的 JavaScript 构造函数返回默认属性值而不是修改后的值?

    我正在使用 Material Steppers 开发一个小型 AngularJS 应用程序 我必须从页面的两个部分中选择项目并返回true only if的物品来自两个部分属于 id 为 categoryID 1 class Control
  • 如何让 gulp-typescript 输出到与源文件相同的目录?

    我有以下管道 function typescripts return gulp src paths watchedFiles ts pipe cached typescripts pipe plumber pipe addsrc paths
  • .NET:为什么不检查枚举的范围/值?

    这一直困扰着我 也许对 NET 内部结构有一定了解的人可以向我解释一下 假设我定义一个枚举如下 public enum Foo Eenie 1 Meenie 2 Miney 3 Moe 4 现在 还假设我的代码中的某处有以下代码 int b
  • 输入名称上的 React hook 表单 useFieldArray 打字稿错误

    我在动态表单的打字稿中编写了以下内容 type FormData name string session name string const control register handleSubmit useForm
  • 避免 TypeScript 中对象和接口之间的重复标识符

    我目前正在使用 TypeScript 开发一个 React 项目 我遇到了一个非常愚蠢的问题 而且最重要的是非常烦人 例如 我创建一个名为的虚拟组件Page需要一个page类型的Page作为道具 interface Props page P

随机推荐