React+TypeScript返回函数后出现Type 'x' is not assignable to type never错误
修复TypeScript中React useRef的类型错误
你的问题出在对useRef的类型定义不明确,以及错误地将navbar的类型指定为宽泛的object,导致TypeScript无法识别DOM元素的style属性,进而出现类型推断错误。
正确的修复步骤:
给useRef指定明确的DOM元素类型
将useRef(null)改为带泛型的定义,明确它指向的是DOM元素:const nav = useRef<HTMLElement | null>(null);如果知道具体是哪种元素(比如div),可以更精确:
const nav = useRef<HTMLDivElement | null>(null);简化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
相关产品推荐
相关产品推荐

