You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js组件使用v-model时出现never类型赋值错误如何解决

问题描述

组件props声明如下:

props: {
  modelValue: {
    type: [Object, null] as PropType<Filter | null>,
    default: null,
    required: true,
  },
}

使用实例化的Filter对象调用组件时,VSCode提示ESLint错误:

Argument of type '{ modelValue: ...' is not assignable to parameter of type 'never'.

组件调用代码:

<filter v-model="myFilter" />

父组件setup逻辑:

setup() {
    const myFilter = ref<Filter | null>(null);
}
解决方法
  • 修正props类型声明
    将type: [Object, null]改为type: Object,因为PropType<Filter | null>已经包含了null类型,数组写法会干扰TypeScript的类型推断:

    props: {
      modelValue: {
        type: Object as PropType<Filter | null>,
        default: null,
        required: true,
      },
    }
    
  • 确保Filter类型定义正确
    检查Filter类/接口是否正确导出,实例化的对象是否严格符合类型结构。比如如果是类,确认导入路径正确,实例化时没有参数错误;如果是接口,确保对象的属性和方法完全匹配。

  • 确认父组件ref的赋值逻辑
    当给myFilter赋值时,确保是Filter的有效实例:

    setup() {
      const myFilter = ref<Filter | null>(new Filter()); // 直接实例化或后续正确赋值
      return { myFilter };
    }
    
  • 更新Vue类型依赖
    若使用Vue 3,确保@vue/runtime-core、vue等包的版本一致且为最新,避免旧版本类型定义的bug。

  • 临时忽略ESLint错误(不推荐长期使用)
    若以上方法无效,可在组件调用处添加注释跳过检查:

    <!-- eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -->
    <filter v-model="myFilter" />
    

内容的提问来源于stack exchange,提问作者François Schuster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 00:26:26