typescript 枚举值与number比较报错

在TypeScript中,尝试用枚举的键名(string类型)获取枚举值并和number比较时出现错误。原因是for...in循环中的keyName被推断为any类型,导致与enum的比较出错。解决方法包括将keyName显式转换为string类型或使用模板字符串来规避编译器检查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

typescript 枚举值与number比较报错

错误描述:

如图所示,我尝试使用枚举key的名称从枚举中取枚举的keyCode值并与我键盘按下的值相比较,但是这里一直报错。
错误信息:此比较似乎是无意的,因为类型 number 和 string 没有重叠。 ts(2367)
在这里插入图片描述
在这里插入图片描述

原因分析:

由于 ts 语法规定 for … in 语句不能为迭代变量给定类型,此时 keyName 为 any,由于any传入枚举 cc.macro.KEY 中编译器
无法预测返回结果,所以产生此错误。

解决办法:

方法一(推荐):将keyName强制转换为 string类型使用
在这里插入图片描述

方法二:${keyName}绕过编译器检测
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值