网站搜索

vue.js - Vue/Typescript:Checked 不是 HTMLInputElement 类型的属性


我有一个处理复选框的方法,但在事件类型的 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);
      }
    },

我的错误是 属性 'target' 不存在于类型 'HTMLInputElement',但我以为只有 HTMLInputElement 可以用于此。

答案#1

boxCheck 方法接收的是一个 Event 而不是 HTMLInputElement。你可以根据使用情况通过在方法中对目标进行类型转换来推断元素的类型,如下所示:

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

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