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

React+TypeScript使用useRef时报错current不存在于never类型ts(2339)

错误原因
  • 核心问题出在条件判断的逻辑运算符使用错误:你使用了逻辑或(||),同时额外加了无意义的ref != null判断。useRef返回的对象本身永远不会为null,所以ref != null判断永远为真,进入分支后TS无法对ref.current做类型收窄,反而会因为多余的空值判断触发类型推断异常,认为ref属于不可能存在的never类型,因此抛出不存在current属性的错误。
  • 次要问题是你没有正确做ref.current的空值校验,无法保证访问时current已经绑定了对应的DOM元素。
修复方案

方案1:修正条件判断

直接判断ref.current是否存在即可,不需要判断ref本身是否为空:

const ref = useRef<HTMLDivElement>(null);

useEffect(() => {
  if (ref.current) {
    setHeight(ref.current.clientHeight);
  }
}, [user]);

方案2:可选链简写

如果不需要额外分支逻辑,可以用可选链+空值合并运算符简化代码,同时避免赋值undefined:

useEffect(() => {
  setHeight(ref.current?.clientHeight ?? 0);
}, [user]);

额外注意

务必在对应的DOM元素上正确绑定ref,否则current永远为null,无法拿到高度值:

<div ref={ref}>需要计算高度的内容</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:24:00