vue3(ts)类型EventTarget上不存在属性value的问题
作者:Gaojuncheng112
这篇文章主要介绍了vue3(ts)类型EventTarget上不存在属性value的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
vue3(ts)类型“EventTarget”上不存在属性“value”
记录自己学习ts遇到的坑,帮助加强记忆。
问题
封装自定义input组件,在获取e.target.value时出现如下报错。类型“EventTarget”上不存在属性“value”
const inputFn = (e: Event) => { const val = e.target.value emit("update:modelValue", val) }
原因
e.target默认为HTMLElement类型,是所有HTML元素类型的父类,不能确保身上一定有value属性。
因此需要断言成HTMLInputElement。
解决方式
const inputFn = (e: Event) => { const val = (<HTMLInputElement>e.target).value emit("update:modelValue", val) }
或
const inputFn = (e: Event) => { const val = (e.target as HTMLInputElement).value emit("update:modelValue", val) }
类型“EventTarget”上不存在属性“clientHeight”
使用ts开发时,注视事件响应函数回调函数(例如onScroll)参数为Event时,使用e.target.clientHeight
等会报错:
类型“EventTarget”上不存在属性“clientHeight”。
解决方法
使用as进行类型断言
(e.target as HTMLElement).scrollHeight
例如:
onScroll={e => { if ( (e.target as HTMLElement).scrollHeight - (e.target as HTMLElement).scrollTop <= (e.target as HTMLElement).clientHeight ) { getSriDetailList(true); } }}
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。