首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

尝试使用Object.entries<T>(枚举).map()映射TS中的枚举,但仅适用于基于字符串的枚举?

Object.entries<T>(枚举).map()是TypeScript中的一个方法,用于将枚举对象转换为一个由键值对组成的数组,并可以对数组进行映射操作。但是该方法仅适用于基于字符串的枚举。

基于字符串的枚举是指枚举成员的值为字符串类型的枚举。在TypeScript中,可以通过以下方式定义一个基于字符串的枚举:

代码语言:txt
复制
enum MyEnum {
  Value1 = "Value 1",
  Value2 = "Value 2",
  Value3 = "Value 3"
}

使用Object.entries<T>(枚举).map()方法可以将该枚举对象转换为一个由键值对组成的数组。每个键值对包含枚举成员的名称和对应的值。例如:

代码语言:txt
复制
const enumArray = Object.entries<MyEnum>(MyEnum).map(([key, value]) => ({ key, value }));
console.log(enumArray);

输出结果为:

代码语言:txt
复制
[
  { key: "Value1", value: "Value 1" },
  { key: "Value2", value: "Value 2" },
  { key: "Value3", value: "Value 3" }
]

这样可以方便地对枚举进行遍历和处理。

对于基于字符串的枚举的优势,它可以提供更具有可读性和可维护性的枚举成员值,同时也可以更好地支持枚举成员值的国际化和本地化。

基于字符串的枚举适用于许多场景,例如表示状态、选项、配置等。在前端开发中,可以将基于字符串的枚举用于UI组件的选项、路由配置等方面。

腾讯云提供了丰富的云计算产品,其中与枚举相关的产品包括云函数(Serverless Cloud Function)和云数据库(TencentDB)。云函数可以用于处理枚举相关的逻辑,而云数据库可以用于存储和管理枚举数据。

希望以上信息对您有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JS轻松遍历对象属性几种方式

自身可枚举属性 Object.keys() 方法会返回一个由一个给定对象自身可枚举属性组成数组,数组属性名排列顺序和使用 for...in 循环遍历该对象时返回顺序一致 。...Object.values() 返回属性值 Object.values()方法返回一个给定对象自身所有可枚举属性值数组,值顺序与使用for...in循环顺序相同 ( 区别在于 for-in 循环枚举原型链属性...,必须手动获取),并使用任意对象类型作为键(普通对象使用字符串基元类型作为键)。...在ES5和早期标准,根本没有指定属性顺序。 然而,从ES 6开始,属性顺序是基于一个特殊规则,除非特指按照时间排序。...Object.entries()最适用于数组解构赋值,其方式是将键和值轻松分配给不同变量。 此函数还可以轻松地将纯JS对象属性映射Map对象

13.6K20
  • 如何遍历JavaScript对象属性

    首先使用Object.keys()来收集属性键,然后使用一个属性访问器,并将值存储在一个额外变量。...new Map(Object.entries(greetings))构造函数使用一个参数来调用,这个参数是greeting对象中导出数组一个键值对。...你可以获得Map大小(对于一个简单对象,你必须手动操作),并使它作为键或对象类型(简单对象把键当作一个字符串原始类型)。...将结果放入一个数组,扩展运算符...是必要。在for...of循环语句中可以直接使用迭代器。 关于顺序上笔记 JavaScript对象是简单键值映射。所以对象属性顺序是无关紧要。...然而,ES2015已经对迭代方式提供了标准化要求:首先是有序数字字符,然后是插入顺序字符串,然后是插入顺序符号(symbols)。在ES5和较早标准,属性顺序没有指定。

    3.6K30

    forEach、for...in 、 for...of

    像 Array和 Object使用内置构造函数所创建对象都会继承自Object.prototype和String.prototype不可枚举属性,例如 String indexOf() 方法或...循环将遍历对象本身所有可枚举属性,以及对象从其构造函数原型中继承属性(更接近原型链对象属性覆盖原型属性)。...for...in是用来循环带有字符串key对象方法。...支持遍历数组、类数组对象(DOM NodeList),字符串Map对象,set对象 不支持遍历普通对象 遍历后输出结果为数组元素值 可搭配实例方法entries(),同时输出数组内容和索引...for...of循环并不能直接使用在普通对象上,如果按对象拥有的属性进行循环,可使用内置Object.keys()方法: for(var key of Objec.keys(someObject

    1.3K10

    TypeScript基础总结

    枚举TS里面是原生支持使用枚举我们可以定义一些带名字常量,它好处是可以让语意更清晰。...定义一个枚举值,需要使用 enum。 TS 支持基于数字字符串枚举。如果是数字枚举枚举值默认是从0开始,依次自增。你也可以手动设置第一个枚举值,比如为1。...支持异构枚举(即数字和字符串混搭枚举),但是并不建议使用这种方式。...另外,TS接口描述变量时可以使用?定义某个变量为可选变量。比如对某个对象进行约束时,如果对象某个属性设置成了可选,则传入对象可以不包含这个属性。...在TS里,泛型类型变量定义为T,需要使用包裹起来,这个时候函数会捕获入参类型,然后在后面就可以使用这个类型了。如下:。

    1K10

    Enum源码解析

    我们使用枚举,很多场合会用到该枚举字串符表达,而上述实现只能得到一个数字,不能直观地表达该枚举常量含义。当然也可用 String 常量,但是又会带来性能问题,因为比较要依赖字符串比较操作。...请注意,当使用枚举类型作为集合类型或映射类型时,可以使用专门且高效set和map实现。...大多数程序员都不会使用这个领域。 它设计用于复杂基于枚举数据结构,、 例如java.util.EnumSet和java.util.EnumMap。...可以覆盖该方法,通常不需要或不需要。 * 当存在更“程序员友好”字符串形式时,枚举类型应该重写此方法。...* * 请注意,对于特定枚举类型T , * 可以使用枚举上隐式声明public static T valueOf(String)方法, * 而不是使用此方法将名称映射到相应枚举常量

    1.1K10

    可以迭代大部分数据类型 for…of 为什么不能遍历普通对象?

    加入我们一起学习,天天进步 for…of 及其使用 我们知道,ES6 引入 for...of 循环,很多时候用以替代 for...in 和 forEach() ,并支持新迭代协议。...for...of 允许你遍历 Array(数组), String(字符串), Map映射), Set(集合),TypedArray(类型化数组)、arguments、NodeList对象、Generator...该数组成员是一个个表示键值对数组 console.log(new Map(Object.entries(obj))) // 遍历普通对象生成Map for(const [, value] of...new Map(Object.entries(obj))){ console.log(value) // value1, value2 } // 方法三:继续使用for in for(const...,它还从构造函数原型查找继承枚举属性; for...of 不考虑构造函数原型上不可枚举属性(或者说for...of语句遍历可迭代对象定义要迭代数据。)

    1.1K30

    细数这些年被困扰过 TS 问题

    最简单方式就是使用类型断言: (window as any).MyNamespace = {}; 虽然使用 any 大法可以解决上述问题,更好方式是扩展 lib.dom.d.ts 文件 Window...]" obj.toString(); 八、数字枚举字符串枚举之间有什么区别 8.1 数字枚举 在 JavaScript 布尔类型变量含有有限范围值,即 true 和 false。...如果枚举某个成员使用显式方式赋值,后续成员未显示赋值, TypeScript 会基于当前成员值加 1 作为后续成员值。...8.2 字符串枚举 除了数字枚举,我们还可以使用字符串作为枚举成员值: enum NoYes { No = 'No', Yes = 'Yes', } assert.equal(NoYes.No...另外,对于纯字符串枚举,我们不能省略任何初始化程序。而数字枚举如果没有显式设置值时,则会使用默认值进行初始化。

    15.1K73

    TypeScript类型声明

    数组之间区别JS数组可以是字符串、数字等其他类型数据,而TS数组是纯数字类型(number)集合,如果在TS定义包含多个类型数组,那就是元组。...:枚举成员类型都是字符串需要注意以下几个方面:字符串枚举没有反向映射,如果进行反向映射的话,取得值时undefined;enum StringValue {A = 'A',B = 'B',C = 'C...,需要对每一个字符串枚举类型成员进行赋值,即必须具有初始化表达式(3)异构含义:枚举类型包括字符串类型和数字类型注意:含有字符串值成员枚举不允许使用计算值,具体意思就是当枚举对象存在有value是字符串枚举成员时候...,字符串类型枚举成员不能反向映射。...注意以下是错误用法,因为含有字符串值成员枚举不允许使用计算值enum Enum {A,B = 3*6,C = 'C',D = 'd',E = 9,F}(4)枚举成员两种形式-计算值和常量枚举对象成员

    35630

    在JS愉快地使用枚举

    背景 在JS并没有原生枚举实现,可以通过下面几种方法来模拟类似的操作。...使用数字 这也是老生常谈内容了,好多语言在没有枚举类型时候都喜欢这么干: const Days = Object.freeze({ Mon: 0, Tue: 1, Wed:...Symbol类型 虽然说用变量把枚举值储存起来了,不过只要别人愿意,他完全可以这样做: // 使用字符串时 isWeekend('Sun') // 使用数字时 isWeekend(0) 那我们属于是白封装了...那就是它不可以被JSON.stringify识别: console.log(JSON.stringify({ day: Days.Sun })) // {} 并且也不能通过JSON.parse获取到,所以这种方法适用于不和后台交互时使用...JS定义枚举集合时优化 可以尝试下列几种方法,只需要写出来枚举名字,通过几个数组API进行赋值操作。 但是由于是动态执行,效率相对来说会降低,不过这通常是不足一提

    3.1K10

    【译】不是 TypeScript TypeScript -- JSDoc 超能力

    TypeScript编译器(tsc)以及 VSCode 等编辑器语言支持无需任何编译步骤,就能提供出色开发体验。下面我们来看看如何使用。...类型有很多很多,比评论几种基本类型更多。结果就是使用 JSDoc 类型可以让你走得很远。...激活检查 为了确保您不仅能够获得类型信息,而且在编辑器(或通过tsc)获得实际错误反馈,请激活源文件@ts-check标志: // @ts-check 如果有一个特定行出错,你知道这样更好,...定义对象 除了基本类型,在 JavaScript 还经常使用到复杂类型和对象,这种情况对基于注释类型注释也没有问题: /** * @param {[{ price: number, vat: number...: 403, notFound: 404, } 枚举与常规 TypeScript 枚举有很大不同, 枚举确保此对象每个键都具有指定类型。

    3.2K30

    类型声明,分类与使用

    let a = 'hello world';类在TS即是变量声明空间也是类型声明空间class fn {}let a=fntype A=fn二、类型分类与使用类型归类类型基本类型string number...;// 尝试使用普通字符串作为键来访问该属性会失败console.log(obj['mySymbol']); // undefined,因为属性键是 symbol 类型,不是字符串// 使用正确 symbol...Red值加1console.log(Color);//未映射原有枚举反向映射enum Color { Red, Green, Blue}console.log(Color[0])...// 输出: Redconsole.log(Color[1]); // 输出: Greenconsole.log(Color[2]); // 输出: Blueconsole.log(Color);//映射原有枚举枚举既可以作为值也可以作为类型...当使用const枚举时,TypeScript编译器会在编译时尽可能地消除对枚举引用,并直接内联枚举成员值。这可以提高性能,并减少生成代码大小。

    6700

    JS常用循环遍历你会几种?

    我们在 Chrome 浏览器尝试。我采用每个循环执行 10 次,去除最大、最小值 取平均数,降低误差。...最后,不同浏览器内核 也会有些差异,有兴趣同学也可以尝试一下。...对象遍历 在对象遍历,经常需要遍历对象键、值,ES5 提供了 for...in 用来遍历对象,然而其涉及对象属性“可枚举属性”、原型链属性等,下面将从 Object 对象本质探寻各种遍历对象方法...hasOwnProperty 过滤 小结 使用 for in 循环时,返回是所有能够通过对象访问、可枚举属性,既包括存在于实例属性,也包括存在于原型实例。...这条规则意味着数组和类数组对象属性会按照顺序被枚举。 在列出类数组索引所有属性之后,在列出所有剩下字符串名字(包括看起来像整负数或浮点数名字)属性。这些属性按照它们添加到对象先后顺序列出。

    2.2K20
    领券