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

React+TypeScript返回函数后出现Type 'x' is not assignable to type never错误

修复TypeScript中React useRef的类型错误

你的问题出在对useRef的类型定义不明确,以及错误地将navbar的类型指定为宽泛的object,导致TypeScript无法识别DOM元素的style属性,进而出现类型推断错误。

正确的修复步骤:

  1. 给useRef指定明确的DOM元素类型
    将useRef(null)改为带泛型的定义,明确它指向的是DOM元素:

    const nav = useRef<HTMLElement | null>(null);
    

    如果知道具体是哪种元素(比如div),可以更精确:

    const nav = useRef<HTMLDivElement | null>(null);
    
  2. 简化toggleNavbar函数
    不需要额外定义navbar为object类型,直接使用nav.current即可,TypeScript会自动推断其类型:

    function toggleNavbar() {
      if (!nav.current) return;
      nav.current.style.transform = "translate(0)";
    }
    

错误原因解释:

你之前将navbar定义为object | null,但object类型过于宽泛,TypeScript无法确定这个对象包含style属性。当你排除null后,TypeScript仍然无法推断navbar["style"]的合法类型,最终导致赋值目标被推断为never,从而抛出类型不兼容的错误。而给useRef指定DOM元素类型后,TypeScript能明确识别元素的style属性(属于CSSStyleDeclaration类型),transform是其中的string类型属性,赋值自然合法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 00:25:58