前端:获取dom元素,使用ts报红错误

场景:vue3+ts

<textarea type="text" v-model="inputtext" name="text" maxlength="50" rows="5"

                                placeholder="请输入您的问题" class="shuru" ref="inputref" /

let inputref = ref(null) 

inputref.value.focus()

报错:inputref.value可能为null,实际页面效果生效了

inputref.value?.focus();

报错:类型“never”上不存在属性“focus”

(inputref as HTMLInputElement).value?.focus(); 

报错:类型 "Ref<null>" 到类型 "HTMLInputElement" 的转换可能是错误的,因为两种类型不能充分重叠。如果这是有意的,请先将表达式转换为 "unknown"。

(inputref.value as HTMLInputElement)?.focus();  

报错;类型 "null" 到类型 "HTMLInputElement" 的转换可能是错误的,因为两种类型不能充分重叠。如果这是有意的,请先将表达式转换为 "unknown"。ts(2352)

最后 成功 

 (inputref.value as HTMLInputElement | null)?.focus(); 不报错了

使用可选链操作符和类型断言的组合来确保只在inputref.value存在且为HTMLInputElement类型时才调用focus()方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值