核心内容摘要
AI智能体实际应用场景盘点:从自动化办公到复杂决策的智能体部署流程图
Vue 警告「Expected Object, got Array」3 步教你把类型对齐prop 立刻合法正文目录报错含义Vue 在挑剔什么类型5 大高频翻车场景 修复代码万能兜底允许多类型与默认值预防 checklist不再踩坑一句话
总结
报错含义Vue 在挑剔什么类型当你在控制台看到Invalid prop value: expected Object, got Array.Vue 在告诉你「你传给xxx的 prop 是 Array但组件声明它是 Object。
」本质prop 类型与传入值不匹配。
5 大高频翻车场景 修复代码① 父组件传 Array子组件声明 Object!-- 父组件 ❌ -- MyComp :data[1, 2, 3] / !-- 子组件 ❌ -- script setup langts defineProps({ data: Object }); // 期望 Object /script修复对齐类型或允许多类型!-- ✅ 传对象 -- MyComp :data{ list: [1, 2, 3] } /或允许多类型defineProps({data:[Object,Array]});// ✅ 允许多类型② 异步数据初始为 Array!-- 父组件 ❌ -- MyComp :dataitems / script setup const items ref([]); // 初始 Array /script修复初始空对象或允许多类型constitemsref({list:[]});// ✅ 初始对象// 或允许多类型defineProps({data:[Object,Array],default:()({})});③ 泛型未约束返回 Array// ❌ 泛型未约束返回 ArrayfunctiongetDataT():T{return[]asT;// T 被推断为 Array}constdatagetData();// Array修复给泛型加约束functiongetDataTextendsRecordstring,any():T{return{}asT;// ✅ 约束为对象}④ 第三方库返回 Array// ❌ 库返回 Arrayimport{load}fromlodash;constdataload(user);// Array修复断言或封装constdataload(user)asRecordstring,any;// 或封装functionloadUser():Recordstring,any{returnload(user)asRecordstring,any;}⑤ 组件 props 未定义类型// ❌ props 未定义类型默认 unknownconstpropsdefineProps();props.data;// unknown修复给 props 上类型script setup langts interface Props { data: Recordstring, any } const props definePropsProps(); // ✅ 具体类型 /script
万能兜底允许多类型与默认值场景方案示例多类型数组类型defineProps({ data: [Object, Array] })默认值default 函数default: () ({})运行时校验validatorvalidator: (v) typeof v object
预防 checklist所有 prop给具体类型而非unknown异步数据初始为对象或允许多类型泛型加约束T extends Recordstring, any第三方库断言或封装控制台「Expected Object」 立即对齐类型或允许多类型
一句话
总结「Expected Object, got Array」 传入值与 prop 类型不匹配。
用「具体类型 多类型 默认值」三件套让 prop 永远合法警告瞬间消失最后问候亲爱的朋友们并邀请你们阅读我的全新著作 《Vue.js 3企业级项目开发实战微课视频版》