Vue/Typescript:检查不是 HTMLInputElement 类型的属性

Posted

技术标签:

【中文标题】Vue/Typescript:检查不是 HTMLInputElement 类型的属性【英文标题】:Vue/Typescript: Checked is not a property on HTMLInputElement type 【发布时间】:2021-11-09 21:40:56 【问题描述】:

我有一个处理复选框检查的方法,但我在事件类型上遇到了target 的问题。


    <input
        @change="$emit('change', $event.target.checked)"
        @keyup.enter="boxCheck($event)"
        :checked="checked"
        ref="test-input"
        type="checkbox"
   />
////
    boxCheck($event: htmlInputElement) 
      if ($event?.target?.checked) 
        $event.target.checked = !$event.target.checked;
        this.$emit('change', $event.target.checked);
      
    ,

我的错误是 Property 'target' does not exist on type 'HTMLInputElement 但我认为只有 HTMLInputElement 可以用于此。

【问题讨论】:

请说明如何使用此功能。您可能不会将 HTMLInputElement 传递给您的函数,而是传递一个与用户操作相对应的事件。 @Ohgodwhy 刚刚更新了模板中的用法 【参考方案1】:

boxCheck 方法接收的是 Event 而不是 HTMLInputElement。您可以通过在方法中强制转换目标来根据您的使用情况得出元素的类型,如下所示:

boxCheck($event: Event) 
  const el = $event.target as HTMLInputElement

  // el.checked now holds reference to what you need

【讨论】:

以上是关于Vue/Typescript:检查不是 HTMLInputElement 类型的属性的主要内容,如果未能解决你的问题,请参考以下文章

Vue3+TypeScript封装axios并进行请求调用

向 Vue typescript 组件添加自定义组件级属性

TypeError:EventEmitter 不是新 MapboxGeocoder 的构造函数

Vue / Typescript,得到模块'“*.vue”'没有导出成员

Vue + Typescript - 无效类型

Vue+TypeScript+Vuex创建项目