TypeScript遍历Object返回undefined,设timeObject为any类型仍无效如何解决?
错误原因
- 外层函数未声明返回值:你写在
map回调内的return仅作用于回调函数本身,不会作为timeToString的返回值,因此函数默认返回undefined,该问题和timeObject的类型定义无关。 - 遍历方法选型错误:
map的作用是遍历数组生成转换后的新数组,你需要的是查找匹配项,应该用find方法。 - 目标返回值错误:你的函数名为
timeToString,核心需求是将时间数值转为对应的文本描述,但原代码中匹配成功后返回的是数值timeObject[key],不符合预期逻辑,应该返回匹配到的键名。
修正后代码
const timeObject = { 'On web close': 0, '10 seconds': 10000, '8 hours': 28800000, '12 hours': 43200000 } const timeToString = (time: number) => { // 查找值匹配的键,添加类型断言解决TS类型报错 const matchedKey = Object.keys(timeObject).find(key => timeObject[key as keyof typeof timeObject] === time) // 无匹配项时返回空字符串作为兜底 return matchedKey ?? '' } console.log(timeToString(10000)) // 输出结果:10 seconds
小提示:原代码中
10 secconds拼写错误,多写了一个c,可根据实际需求调整。
内容的提问来源于stack exchange,提问作者Petr Špác
相关产品推荐
相关产品推荐

