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);
}
}}
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论