目录
问题发现
很多人,或者跟我一样的学习vue的应该会经常出现这个错误,但是不知道怎么解决。
例如当天编写了这一段程序代码
let s_name=ref('')
let goodsprice = ref(0)
let quantity = ref(0)
let discount = ref(0)
let goods_list = ref([])
let goodprice = computed(()=>{
return goodsprice.value*quantity.value-discount.value
})
function addToCart(){
goods_list.value.push({
name:s_name.value,
goodsprice:goodsprice.value,
quantity:quantity.value,
discount:discount.value,
price:goodprice.value,
})
s_name.value=''
goodsprice.value=0
quantity.value=0
discount.value=0
}
刚开始能运行好好的,当我关闭编程软件,再次打开的时候就会发现,出现以下红色波浪线提示错误。


问题原因
报错提示:你正在尝试将一个对象添加到一个类型为 never[] 的数组中,而 never 类型的数组是不能被赋值或添加任何元素的。
错误原因是 goods_list 被推导为 Ref<never[]>,即没有显式声明 goods_list 的类型,TypeScript 推断它是一个 Ref<never[]>,这个数组的元素类型是 never。你试图向一个 never[] 类型的数组中添加一个对象,TypeScript 就会报错,因为 never 是不可赋值的类型。
解决方法
需要为 goods_list 显式声明一个类型,即创建接口,并声明类型
interface GoodItem {
name: string
goodsprice: number
quantity: number
discount: number
price: number
}
let goods_list = ref<GoodItem[]>([])
或者使用类型推导的方式初始化
let goods_list = ref([
{
name: '',
goodsprice: 0,
quantity: 0,
discount: 0,
price: 0
}
])
当我们使用以上两种方式就可解决该报错问题

总结
这个问题是很容易出现的,平常编写的时候并没有那么容易发现,因为当时编写的时候不会出现提示报错,等关闭打开程序编写的时候就会出现该问题,这时候需要平常要多注意这个问题。
4522

被折叠的 条评论
为什么被折叠?



