Ionic+Vue中data数组push报any类型不能赋值给never类型怎么解决?
问题原因
你初始化events为无类型的空数组时,TypeScript无法推断数组元素的类型,会默认将其推导为never[]类型,该类型的数组不允许插入任何类型的值,因此调用push方法时报错。
解决步骤
1. 先定义事件项的类型
根据你模板中用到的字段,先声明对应的数据结构:
interface EventItem { event_ID: number; event_title: string; event_picture: string; address_exists: boolean; event_day: number; event_month: number; is_virtual: boolean; // 可根据实际业务补充其他字段 }
2. 在data中为数组指定类型
通过类型断言给初始空数组标注类型即可,写法如下:
// Vue3 选项式API需要用defineComponent包裹组件才能正确推导类型 import { defineComponent } from 'vue'; export default defineComponent({ data() { return { // 核心是通过as关键字指定数组类型 events: [] as EventItem[] }; }, methods: { loadMore() { // 如果response.data是单条事件数据 this.events.push(response.data as EventItem); // 如果response.data是多条事件组成的数组,改用扩展运算符插入 // this.events.push(...(response.data as EventItem[])); } } })
如果你使用的是Vue2 + TypeScript,只要把组件声明换成Vue.extend或者对应装饰器写法,data里的类型断言逻辑完全相同。
内容的提问来源于stack exchange,提问作者Jean R.
相关产品推荐
相关产品推荐

