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

如何在typescript中访问Enum?给出错误“元素隐式具有any类型,因为索引表达式不是number类型”

在 TypeScript 中访问枚举(Enum)的方法是通过枚举名称和枚举成员来引用。

首先,确保枚举已经被定义。例如,假设我们有一个名为 Color 的枚举,它包含了 Red、Green 和 Blue 三个成员:

代码语言:txt
复制
enum Color {
  Red,
  Green,
  Blue
}

要访问枚举成员,可以使用枚举名称后跟成员名称的方式进行引用。例如,要访问 Color 枚举的 Red 成员,可以使用 Color.Red

代码语言:txt
复制
let color: Color = Color.Red;
console.log(color);  // 输出:0

在上述代码中,我们声明了一个类型为 Color 的变量 color,并将其赋值为 Color.Red。由于枚举成员是按照从 0 开始的索引进行编号的,默认情况下,Color.Red 的值为 0。因此,输出的结果为 0。

然而,当我们尝试使用枚举成员的索引表达式时,有时会遇到错误信息 "元素隐式具有 any 类型,因为索引表达式不是 number 类型"。这是因为 TypeScript 默认将枚举成员的索引类型设置为 any,而不是 number。

为了解决这个错误,我们可以手动指定枚举的成员类型为 number。例如,修改 Color 枚举的定义如下:

代码语言:txt
复制
enum Color {
  Red = 0,
  Green = 1,
  Blue = 2
}

通过将 Red 的值显式设置为 0,我们将枚举成员的类型指定为 number。现在,我们再次尝试访问枚举成员的索引表达式时,将不会再出现错误:

代码语言:txt
复制
let color: Color = Color.Red;
console.log(color);  // 输出:0

这样,我们成功地在 TypeScript 中访问了枚举。

推荐的腾讯云相关产品:无

希望以上信息能对你有所帮助!如果有任何其他问题,请随时提问。

相关搜索:Object.keys迭代导致Typescript错误“元素隐式具有'any‘类型,因为索引表达式不是’number‘类型”Typescript错误:“元素隐式具有'any‘类型,因为类型'Error’没有索引签名”元素隐式具有“”any“”类型,因为“”string“”类型的表达式无法用于索引类型“”{ AT: number;BE: number,...}“”React Typescript:元素隐式具有'any‘类型,因为类型没有索引签名Typescript元素隐式具有“”any“”类型,因为“”any“”类型的表达式不能用于索引类型TypeScript:元素隐式具有“”any“”类型,因为“”any“”类型的表达式不能用于索引类型“”Assignable“”Express Request Param Id - Element隐式具有'any‘类型,因为索引表达式不是'number’类型元素隐式具有“”any“”类型,因为索引表达式不是“”number“”类型脚本-从数组中抓取单个键Typescript错误:元素隐式具有'any‘类型,因为'string’类型的表达式不能用于索引类型TypeScript错误:元素隐式具有“”any“”类型,因为“”string“”类型的表达式不能用于索引类型X元素隐式具有“”any“”类型,因为“”string“”类型的表达式不能用于索引类型React Typescript如何使用命名数组的接口:元素隐式具有'any‘类型,因为索引表达式不是'number’类型Typescript-React State:元素隐式具有'any‘类型,因为类型'State’没有索引签名元素隐式具有“”any“”类型,因为“”any“”类型的表达式不能用于索引具有createStyles的类型元素隐式具有“”any“”类型,因为“”any“”类型的表达式不能用于索引类型“”{}“”- React Anagram元素隐式具有“”any“”类型,因为“”string“”类型的表达式不能用于索引类型“”{...}“”元素隐式具有“”any“”类型,因为“”string“”类型的表达式不能用于索引类型A元素隐式具有any类型,因为时间any的表达式不能用于索引类型隐式获取元素的类型为“”any“”,因为类型为“”number“”的表达式不能用于索引类型错误“”绑定元素'xxx‘在Typescript中隐式具有'any’类型错误
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

类型声明,分类与使用

;// 尝试使用普通字符串作为键来访问该属性会失败console.log(obj['mySymbol']); // undefined,因为属性键是 symbol 类型不是字符串// 使用正确的 symbol...具体来说,它表示的是那些永远不会有返回值的函数(抛出错误的函数或无限循环的函数)的返回类型。...类型当声明一个变量为 any 类型时,可以在这个变量上执行任何操作,而 TypeScript 编译器不会给出类型错误。...这在一定程度上类似于 JavaScript 的动态类型系统,但在 TypeScript any 类型是显声明的。...'XiaoMu'};// 下面这行代码将会引发错误因为 id 是只读的,不能被修改// person.id = 2;索引签名如果不确定对象会有哪些属性,如果知道它们的类型,可以使用索引签名。

6900
  • TypeScript 4.2 正式发布:更智能的类型别名保留,声明缺失的帮助函数,还有许多破坏性更新

    标记 逻辑表达式改进的未调用函数检查 解构变量可以显标记为未使用 可选属性和字符串索引符号之间的宽松规则 声明缺失的帮助函数 破坏性更新 更智能的类型别名保留 TypeScript 有一种为类型声明新名称的方法...元组类型的前导 / 中间剩余元素TypeScript ,元组类型用于对具有特定长度和元素类型的数组进行建模。...引入新标志 当 TypeScript 第一次引入索引符号时,你只能使用“方括号包括的”元素获取语法(person["name"])来获取它们声明的属性。...; } } 为了这些情况更简单,不久前,TypeScript 允许当一个类型有一个字符串索引符号时使用“点”属性访问语法(person.name)。...现在会发出一个any错误

    3.2K20

    TypeScript 4.2 Beta版本发布:带来诸多更新,营造更好的开发体验

    下面就来看看 TypeScript 4.2 带来了哪些新内容。 元组类型的 Rest 元素可放置于元组的任何位置 在 TypeScript ,元组类型用于建模具有特定长度和元素类型的数组。.../pull/42284 模板字面量表达式具有模板字面量类型TypeScript 4.1 我们引入了一种新的类型:模板字面量类型。...当 TypeScript 首次引入索引签名时,你只能使用“括号”的元素访问语法( person["name"])来获得它们声明的属性。...TypeScript 4.2 包含一些重大更改,但我们认为它们应该不会太影响升级过程。 模板字面量表达式具有模板字面量类型 如前所述,模板字符串表达式现在以模板字面量类型开始。...yield 表达式但没有在上下文中类型化它(也就是说 TypeScript 不知道类型是什么)时,TypeScript 现在将发出一个any 错误

    1.6K10

    以淘宝店铺为例,谈谈 TypeScript ESLint 规则集考量

    prefer-for-of 在你使用 for 循环遍历数组时,如果索引仅仅用来访问数组成员,则应该替换为 for...of。...而单继承的空接口场景则是较多的,先确定下继承关系再在后续添加成员。 no-explicit-any 不允许显any。...推荐配合 tsconfig 的 --noImplicitAny (检查 any)来尽可能的保证类型的完整与覆盖率。...为什么:虽然 TypeScript 是允许使用各种合法表达式作为枚举成员的,但由于枚举的编译结果拥有自己的作用域,因此可能导致错误的赋值,: const imOutside = 2; const b...推荐在规则配置仅开启 allowNumber 来允许数字,而禁止掉其他的类型,你所需要做得应当是在把这个变量填入模板字符串时进行一次具有实际逻辑的转化。

    2.7K30

    基本类型_TypeScript笔记2

    类型 TypeScript共有13种基本类型,除了JavaScript所有的7种之外,还有: Array:数组,表示一组类型相同的元素 Tuple:元组,表示一组固定数量的元素(不要求元素类型相同),二元组...: Array类型有2种声明格式(elemType []和Array) 访问Tuple发生越界时,应用并集类型(union type),所以上例x[10]的类型是string |...number Enum值可以省略,默认按key声明顺序从0开始。...;避免访问window.name) P.S.特殊的,建议开启--strictNullChecks选项,此时Undefined和Null只允许赋值给Void以及各自对应的类型 P.S.关于Never作为类型保护的应用...,但在JSX只能用as type(尖括号语法与JSX语法冲突) 四.常用技巧 访问枚举key 实际上,TypeScript枚举类型建立了key-value的双向索引,例如: enum Color {Red

    75520

    数栈技术分享前端篇:TS,看你哪里逃~

    经典自问自答环节——因为它可以解决一些 JS 尚未解决的痛点:1、JS 是动态类型的语言,这也意味着在实例化之前我们都不知道变量的类型,但是使用 TS 可以在运行前就避免经典低级错误。...类型之间用 ' | '隔开 type dayOff = string | number | boolean 联合类型推导可能会导致错误,遇到相关问题请参考语雀 code and tips...—— 《TS的推导》 .值得注意的是,如果访问不共有的属性的时候,会报错,访问共有属性时不会.上个最直观的demo function dayOff (value: string | number...FriendList[number]这里的 number 是关键字,用来取数组子项的类型。在元组也可以使用字面量数字得到数组元素类型。...something; } 2)非空断言符 TypeScript具有一种特殊的语法,用于从类型删除 null 和 undefined 不进行任何显检查。

    2K30

    TypeScript 中文入门教程》 1、基础数据类型

    // 错误的初始化 x = [10, 'hello']; // 错误 我们可以使用数字检索一个已知的元素,但需要注意类型正确。...console.log(x[0].substr(1)); // 正确 console.log(x[1].substr(1)); // 错误,'number' 类型没有 'substr' 方法 当访问索引超过边界时...'string' 和 'number' 都有 toString 方法 x[6] = true; // 错误,布尔值不是 (string | number) 的一种 联合类型是更高级的议题,我们会在后续的章节中介绍...Enum 枚举 TypeScript拓展了JavaScript原生的标准数据类型集,增加了枚举类型enum)。...举例来说,如果我们有一个值为2,但我们不确定这个数值对应枚举类型的哪个元素,那我们可以直接查找这个数值对应的名称: enum Color {Red = 1, Green, Blue}; var colorName

    1.2K20

    数栈技术分享前端篇:TS,看你哪里逃~

    经典自问自答环节——因为它可以解决一些 JS 尚未解决的痛点:1、JS 是动态类型的语言,这也意味着在实例化之前我们都不知道变量的类型,但是使用 TS 可以在运行前就避免经典低级错误。...类型之间用 ' | '隔开 type dayOff = string | number | boolean 联合类型推导可能会导致错误,遇到相关问题请参考语雀 code and tips...—— 《TS的推导》 .值得注意的是,如果访问不共有的属性的时候,会报错,访问共有属性时不会.上个最直观的demo function dayOff (value: string | number...FriendList[number]这里的 number 是关键字,用来取数组子项的类型。在元组也可以使用字面量数字得到数组元素类型。...something; } 2)非空断言符 TypeScript具有一种特殊的语法,用于从类型删除 null 和 undefined 不进行任何显检查。

    2.7K10

    1.8W字|了不起的 TypeScript 入门教程(第二版)

    在 JavaScript 是没有元组的,元组是 TypeScript 特有的类型,其工作方式类似于数组。 元组可用于定义具有有限数量的未命名属性的类型。每个属性都有一个关联的类型。...与数组一样,我们可以通过下标来访问元组元素: console.log(tupleType[0]); // semlinker console.log(tupleType[1]); // true 在元组初始化的时候...3.{} 类型 {} 类型描述了一个没有成员的对象。当你试图访问这样一个对象的任意属性时,TypeScript 会产生一个编译时错误。...1.可辨识 可辨识要求联合类型的每个元素都含有一个单例类型属性,比如: enum CarTransmission { Automatic = 200, Manual = 300 } interface...可访问性修饰符( public 或 private); 私有字段不能在包含的类之外访问,甚至不能被检测到。

    10.2K51

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

    好的,下面我们来开始介绍第一个问题 —— 如何在 window 对象上显设置属性。...除了 T 之外,以下是常见泛型变量代表的意思: K(Key):表示对象的键类型; V(Value):表示对象的值类型; E(Element):表示元素类型。...Parameter 'y' implicitly has an 'any' type. 该信息告诉我们参数 x 和参数 y 具有 any 类型。为了解决这个问题,我们可以为参数设置一个类型。...7.3 {} 类型 {} 类型描述了一个没有成员的对象。当你试图访问这样一个对象的任意属性时,TypeScript 会产生一个编译时错误。...可访问性修饰符( public 或 private); 私有字段不能在包含的类之外访问,甚至不能被检测到。

    15.2K73

    Typescript-基础类型

    除了支持十进制和十六进制字面量,Typescript还支持ECMAScript2015引入的二进制和八进制字面量。...let x:[string, number]; x=['hello',10]; x=[10,'hello']; // error 当访问一个已知索引元素,会得到正确的类型: console.log(...--console.log(x[1].substr(1)); // Error,'number' does not have 'substr' 当访问一个越界的元素,会使用联合类型替代: x[3] =...x[6] = true; // Error, 布尔不是(string | number类型 联合类型是高级主题,后续还会讨论 枚举 enum类型是对Javascript类型的补充,像C#等其他语言一样...Never never类型表示的是那些永不存在的值的类型。例如,never类型是那些总是会抛出错误或者根本就不会有返回值的函数表达式或箭头表达式的返回值类型

    62730

    TS 进阶 - 类型基础

    TypeScript ,symbol 类型并不具有这一特性,多个具有 symbol 类型的对象,它们的 symbol 类型指的都是 TypeScript 的同一个类型。...在 TypeScript ,要引用已创建的 unique symbol 类型,需要使用类型查询操作符 typeof, typeof sym1。...# void 类型TypeScript ,一个没有返回值(即没有调用 return 语句)的函数,其返回值类型应该被标记为 void 而不是 undefined,尽管它的实际值就是 undefined...各修饰符的含义: public 此类成员在类、类的实例、子类中都可以访问; private 此类成员只能在类的内部访问; protected 此类成员只能在类的内部和子类访问; 不显使用访问性修饰符...: any[]): void; 除了显标记一个变量或参数为 any,在某些情况下一些变量或参数会被推导为 any 类型: let foo; function func(foo, bar)

    1.8K50

    《现代Typescript高级教程》类型

    现代JavaScript高级小册 深入浅出Dart 现代TypeScript高级小册 类型 TypeScript提供了JavaScript的所有基本数据类型number、string、boolean...它还增加了额外的类型,比如any、unknown、never、void等。 numberTypeScript,所有的数字都是浮点数。这些数字的类型number。...在接下来的对话,我们可以进一步讨论其他的TypeScript类型,比如枚举(enum)、null、undefined、never、void以及对象类型。...Enum Enum是一种特殊的类型,它可以更容易地处理一组有名字的常量。在TypeScriptenum的默认起始值是0,然后每个成员的值都会依次增加。...在JavaScript,当一个函数没有返回任何值时,它会地返回undefined。

    23840

    typeScript学习总结(一)

    最近在学习typeScript因为公司估计需要使用。同样是学习笔记,写文章的意图就在于复习总结一下之前的学习,顺带着积累写文章的感觉,在这个人人都是自媒体的时代,也能不被落的太远。...它有三个特性: 类型检查:在编译代码时,就进行严格的类型检查 语言扩展:除了js语言的最新和未来提案特性,还包括其他语言的特性,接口、抽象类 工具属性:是指ts不是一门独立的语言,而是像一个工具库 语言类型简介...] = [1,'2'] // 可以越界添加 tuple.push(3) // 但是不可以越界访问 tuple[2] // 报错 // any,任何类型,这就和js定义变量没其他不同了 let any1...: any = '1' any1 = 2 // void,什么类型不是 // void作为操作符,可以使表达式为undefined void 1+2 // 输出undefined // 函数返回值为void...{ while(true) {} } // 联合类型,每种类型都是或的关系 let union: number | string | boolean ts枚举类型 枚举类型在js是没有的,是一组具有名称的常量集合

    73140

    TypeScript手记(二)

    除了支持十进制和十六进制字面量,TypeScript 还支持 ECMAScript 2015引入的二进制和八进制字面量。...第一种,可以在元素类型后面接上 [],表示由此类型元素组成的一个数组; 第二种方式是使用数组泛型,Array; let list: number[] = [1, 2, 3] //第一种...当访问一个已知索引元素,会得到正确的类型;当访问一个越界的元素,会使用联合类型替代(以后再说);自从 TyeScript 3.1 版本之后,访问越界元素会报错,我们不应该再使用该特性。.../ Error, 布尔不是(string | numbe)类型 枚举 enum 类型是对 JavaScript 标准数据类型的一个补充。...(colorName) // 显示'Green'因为上面代码里它的值是2 any 有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型

    54520
    领券