You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React+TypeScript报错:void类型表达式无法做真值检测的解决方法

解决React组件中TypeScript关于void表达式真值检测的错误

问题原因

你遇到的错误是因为在onClick事件处理中使用了逻辑或运算符||:

onClick={() => setModalVisible(true) || setSrc(`/imgs/${img}`)}

React的状态更新函数(比如setModalVisible)返回值类型是void,而TypeScript不允许对void类型的表达式进行真值检测(||会尝试判断左值的真假),所以触发了报错。

你修改itemProps中setModalVisible的返回类型为boolean是错误的,因为实际React提供的状态更新函数(比如useState返回的setter)本身就是void类型,这样修改会导致父组件传递的函数类型不匹配,引发新的类型错误。

正确解决方案

直接在箭头函数的块级作用域中依次调用两个函数即可,不需要依赖逻辑运算符:

onClick={() => {
  setModalVisible(true);
  setSrc(`/imgs/${img}`);
}}

这样既满足TypeScript的类型要求,又能实现点击后同时触发模态框显示和设置图片源的需求。

另外,注意不要修改itemProps中setModalVisible的返回类型,保持原本的void即可,因为这和React状态更新函数的实际类型一致。

内容的提问来源于stack exchange,提问作者eskimopest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 05:43:16