场景: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()
方法。