TypeScript中never[]赋值给any[]报错的原因分析以及快速解决办法
never[]类型的说明
在TS中,空数组[]如果没有上下文类型,会被推断为never[]类型。
因为在TS中,数组类型是可变元组,而空数组在没有其他信息的情况下,无法确定其元素类型。
因此TS会将其推断为never[],表示这个数组不可能有元素(因为never类型表示不可能存在的类型)。
下面的情况会被推断为 never[]类型
// 情况1:空数组字面量
const arr = [] // TypeScript 推断为 never[]
// 情况2:空数组作为对象属性
const obj = {
items: [] // items 被推断为 never[]
}
// 情况3:在函数内部
function test() {
const arr = [] // 推断为 never[]
return arr // 返回类型 never[]
}
const personObj = reactive({
likeArr: [] // 推断为:never[]类型
})
const personObj = ref({
serviceAndDimensionData: [], // 推断为:never[]类型
})
下面的情况会被推断为 any[]类型
从any类型的值中取数组时。你可以看你取值的对象是否any类型的。
any[]不能赋值给never[]
never类型表示不可能存在的类型
never[]赋值给any[]报错的快速解决办法
const personObj = ref({
serviceAndDimensionData: [] as any[], // 将 never[]类型变成any[]类型
})
这样网络请求返回来的数据赋值给never[]类型时就不会报错了。
最好的解决解决办法还是要在声明变量的时候声明数据类型哈。
遇见问题,这是你成长的机会,如果你能够解决,这就是收获。
作者:晚来南风晚相识
出处:https://www.cnblogs.com/IwishIcould/
本文版权归作者所有,欢迎转载,未经作者同意须保留此段声明,在文章页面明显位置给出原文连接
如果文中有什么错误,欢迎指出。以免更多的人被误导。
出处:https://www.cnblogs.com/IwishIcould/
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,或者关注博主,在此感谢!
万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主(っ•̀ω•́)っ✎⁾⁾!
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
支付宝
微信
如果文中有什么错误,欢迎指出。以免更多的人被误导。

浙公网安备 33010602011771号