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

Vue3中ref(null)报‘never类型不存在scrollHeight/clientHeight’错误的解决

问题原因

当你用ref(null)初始化时,TypeScript会自动推断这个ref的类型为Ref<null>——也就是它的值只能是null,无法被赋值为DOM元素。所以在informationRefStatus函数中,element的类型是null,尝试访问scrollHeight/clientHeight这些DOM元素特有的属性时,TypeScript会直接报错,因为null类型上不存在这些属性,最终类型收窄为never,触发你看到的错误。

而ref()(无参数)初始化时,TypeScript推断的类型是Ref<undefined>,当你通过v-ref绑定DOM元素后,这个ref的类型会自动拓宽为Ref<HTMLElement | undefined>,此时用可选链element?.scrollHeight访问属性是合法的,所以不会报错。

解决方法

给ref指定明确的联合类型,明确它可以是DOM元素或null:

import { ref } from 'vue'

// 指定类型为 HTMLElement | null
const information = ref<HTMLElement | null>(null)

function informationRefStatus() {
  const element = information.value
  isTextTruncated.value = element?.scrollHeight > element?.clientHeight
}

这样TypeScript就知道这个ref的值既可以是null,也可以是DOM元素,后续通过可选链访问属性时就不会触发类型错误。

如果你的元素是特定类型的DOM节点(比如<div>对应HTMLDivElement),也可以指定更精确的类型,让类型检查更严格:

const information = ref<HTMLDivElement | null>(null)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:02:19