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

如何从` `String`s‘或` `Symbol`s列表创建`Enum`?

Strings或Symbols列表创建Enum的具体步骤如下:

  1. 首先,创建一个空对象来保存Enum的键值对。
  2. 遍历StringSymbol列表,对于每个元素,将其作为键添加到对象中,并将其值设置为该元素在列表中的索引值。
  3. 创建一个新的Enum对象,将刚刚创建的对象作为参数传入。

下面是一个示例代码:

代码语言:txt
复制
function createEnum(stringsOrSymbols) {
  const enumObject = {};
  stringsOrSymbols.forEach((item, index) => {
    enumObject[item] = index;
  });
  const Enum = Object.freeze(enumObject);
  return Enum;
}

// 使用示例
const myEnum = createEnum(['VALUE1', 'VALUE2', 'VALUE3']);
console.log(myEnum.VALUE1); // 输出 0
console.log(myEnum.VALUE2); // 输出 1
console.log(myEnum.VALUE3); // 输出 2

这段代码中,我们创建了一个createEnum函数,它接受一个字符串或符号数组作为参数。然后,我们遍历该数组并为每个元素创建一个键值对,键是元素本身,值是元素在数组中的索引。最后,我们使用Object.freeze方法来冻结该对象,以防止后续修改。返回的Enum对象可以通过键来访问相应的值。

对于推荐的腾讯云相关产品和产品介绍链接地址,我不能提及具体品牌商,但你可以通过访问腾讯云官方网站(https://cloud.tencent.com/)来了解他们的云计算产品和服务。

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

相关·内容

TypeScript超详细入门教程(上)

我会带着你创建一个项目,并实现目录中列出的功能,帮助你将学到的知识在实际开发中进行运用。...上面这个例子中使用 Symbol 方法创建了两个 symbol 值,方法中都传入了相同的字符串’lison’,但是s1 === s2却是 false,这就是我们说的,Symbol 方法会返回一个独一无二的值...(1) Symbol.for() 我们使用 Symbol 方法创建symbol 值是独一无二的,每一个值都不和其他任何值相等,我们来看下例子: const s1 = Symbol( "lison...,增加了unique symbol这种类型,他是symbols的子类型,这种类型的值只能由Symbol()Symbol.for()创建,或者通过指定类型来指定一个值是这种类型。...所以 TypeScript 在 1.4 新增 const enum(完全嵌入的枚举),在之前讲的定义枚举的语句之前加上const关键字,这样编译后的代码不会创建这个对象,只是会枚举里拿到相应的值进行替换

4.2K41
  • 理解 Es6 中的 Symbol 类型

    ,归纳为JS语言的第 7 种数据类型,它是通过Symbol函数生成 通过Symbol()函数来创建生成一个Symbol实例 let s1 = Symbol(); console.log(typeof s1...); // itclanCoder console.log(s1.description); // itclanCoder console.log(s1 === s2); // false 第 5...')]: "川川", enum: 2, nonEnum: 3 }; Reflect.ownKeys(person) // ["enum", "nonEnum", Symbol(name)]...在这种情况下,我们就需要使用另一个 API 来创建获取Symbol,那就是Symbol.for(),它可以注册获取一个window间全局的Symbol实例,它是Symbol的一个静态方法 这个在前面已经提到过一次...Es6中Symbol的常见使用,Symbol是一种新的基础类型,它形式字符串的数据类型,是字符串类型的一种额外拓展 常用于作为对象属性的键名,每个Symbol()返回的symbol值都是唯一的,可保证对象的每个属性名的唯一性

    42610

    TypeScript一些知识点

    考虑如下代码: let s1: symbol = Symbol(); s1 = Symbol(); interface A { [s1]: number; // 报错 } const a: A...为了避免这种问题,TS引入了 unique symbol 类型,该类型的 Symbol 必须用 const 申明( let var 声明直接报错),这样就不能再修改了: const s1: unique...const s1: unique symbol = Symbol(); const s2: unique symbol = s1; // 报错 const s3: symbol = s1; // OK...这里也可以给某个枚举值赋值为数字,这样枚举值的计数就会赋值开始: enum Direction { UP = -2, DOWN, LEFT = 10, RIGHT, } // 实际编译为...'); let b = s('name2'); 上述类型 Str 可以通过 new 来创建 String 对象,也可以通过函数调用返回 string 类型;实际上 String 函数就属于这种类型。

    10710

    基本类型_TypeScript笔记2

    一.JavaScript类型 JavaScript有7种类型:Boolean、Number、String、Undefined、Null、Object,以及ES6新增的Symbol 这7种TypeScript...= Symbol(); // Symbol 变量声明 上面示例中的变量都是通过let声明的,其实有3种变量声明方式: var:函数作用域 let:块级作用域 const:块级作用域,常量(不允许修改...Variable Declarations P.S.实际上,let和const最终都会被编译成var,块级作用域等特性通过变量重命名来模拟 二.TypeScript类型 TypeScript共有13种基本类型...:任意类型,表示未知类型,比如动态内容(用户输入、第三方类库)不知道类型的东西(混合类型数组),可以声明any类型绕过类型检查 Void:空类型,表示没有类型,比如无返回值函数的返回值类型 Never...| number Enum值可以省略,默认按key声明顺序0开始。

    75620

    typescript基础篇(2):数据类型

    本章基础数据类型开始讲起 ? 注意:在ts中,定义数据类型,除了Function,其它全部都是开头小写。...你可以这么操作: // 完全由数字组成的数组,二者等价 let arr1: number[] = [1, 2, 3] let arr2: Array = [1, 2, 3] // 由数字 ...: // 元组类型:限定了数组成员的类型和个数 let tuple:[number,string]= [1,'2'] let tuple: [number, string] = ["1", "2"] /...symbol的含义就是:具有唯一的值: const s1: symbol = Symbol() const s2 = Symbol() console.log(s1 === s2) // false...比方说手机通讯录: •张三->10086•李四->10010 我打电话给张三时,直接通讯录检索器名字即可,很少一个个按键拨电话。当然你想通过电话来找人,也是可以的。

    56410

    Effecvtive Java Note

    Elvis{ INSTANCE; public void something(){} } 4.通过私有构造器强化不可实例化的能力 5.避免创建不必要的对象 String s=new...String s="string"; 这个版本只用了一个String实例,而不是每次执行的时候都创建一个新的实例。而且,他可以保证。...好的api文档应该描述一个给定的方法做了什么工作,而不是描述它是如何工作的。 构造器决不能调用可覆盖的方法,无论是直接调用还是间接调用,如果违反了这个原则,很可能导致程序失败。...25.列表优先于数组 数组提供了运行时的类型安全,但是没有编译时的类型安全,反之,对于泛型也一样,一般来说,数组和泛型不能很好的混合使用。...symbol; Operation(String symbol) { this.symbol=symbol; } @Override public String

    73550

    Effecvtive Java Note

    Elvis{ INSTANCE; public void something(){} } 4.通过私有构造器强化不可实例化的能力 5.避免创建不必要的对象 String s=new...String s="string"; 这个版本只用了一个String实例,而不是每次执行的时候都创建一个新的实例。而且,他可以保证。...好的api文档应该描述一个给定的方法做了什么工作,而不是描述它是如何工作的。 构造器决不能调用可覆盖的方法,无论是直接调用还是间接调用,如果违反了这个原则,很可能导致程序失败。...25.列表优先于数组 数组提供了运行时的类型安全,但是没有编译时的类型安全,反之,对于泛型也一样,一般来说,数组和泛型不能很好的混合使用。...symbol; Operation(String symbol) { this.symbol=symbol; } @Override public String

    30110

    分享 7 个你可能喜欢的 JS 小技巧

    Symbol 在可扩展性和元编程方面有一些有趣(且高度专业化)的应用。但它也是创建枚举的好方法——一组命名常量——JavaScript 语言本身并不支持它。...Green: Symbol('green'), Red: Symbol('red'), Yellow: Symbol('yellow') } // This function uses the enum...要了解它是如何工作的,请想象您创建了一个这样的数组,其中包含两个对象: const objectsOriginal = [{name: 'Sadie', age: 12},...这个领域变得非常深入和复杂,但我总是保持简单而快速的 Mulberry32 算法来给我完全确定性的伪随机数(这意味着如果你相同的种子开始,你总是得到相同的列表值)。...当然,您不需要生成器函数来创建随机数列表,但它是一个优雅的解决方案。 总结 如果您喜欢这些示例,请查看注意收藏学习,在此,非常感谢您的阅读,祝您编程愉快!

    51820
    领券