TypeScript类型报错:Property val1不存在于void | Value类型
问题解决建议
核心问题分析
你遇到的类型错误根源有两个:
myFunction的返回类型被错误指定为Promise<Value | void>,但实际上throwError函数会直接抛出异常,不会产生返回值,myFunction要么成功返回Value,要么抛出异常,永远不会返回void。- catch块里的
return throwError(e)是冗余写法,throwError本身会抛出异常,return语句永远不会被执行到,反而让TypeScript错误推断可能存在void返回值。
具体修复步骤
1. 修正myFunction的代码
去掉catch块中的return,直接调用throwError,并修正返回类型:
async function myFunction( a: A, b: B ): Promise<Value> { // 明确返回类型为Promise<Value> try { const variable = await getSomething(a,b); return getValue(variable); } catch(e) { throwError(e); // 去掉return,直接抛出异常 } }
如果不想手动指定返回类型,TypeScript也能自动推断出正确的Promise<Value>,因为失败路径没有返回值,只有抛出。
2. 优化anotherFunction的异常处理(可选但推荐)
如果anotherFunction需要处理myFunction抛出的异常,可以添加try/catch块,避免未捕获异常:
async function anotherFunction() { // do some stuff try { const { val1 } = await myFunction(x, y); // do rest stuff } catch (e) { // 处理异常逻辑,比如打印日志、提示用户等 console.error('调用myFunction失败:', e); } }
为什么这样修复有效
- 去掉return后,
myFunction的失败路径不再有"返回值"的假象,TypeScript能正确识别函数只会返回Value或抛出异常。 - 明确返回类型后,
await myFunction(x, y)的结果类型就是Value,解构时不会再出现void | Value的类型冲突。
内容的提问来源于stack exchange,提问作者karo-s
相关产品推荐
相关产品推荐

