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

TypeScript中如何正确初始化Item对象数组?解决push报错问题

问题解决:数组未初始化导致的push报错

你遇到的Cannot read properties of undefined (reading 'push')错误,核心原因是只声明了数组的类型,但没有初始化数组实例——你写的var itemObjects: [Item]只是告诉TypeScript这个变量应该是Item类型的数组,但并没有给它分配一个空数组实例,所以变量实际值是undefined,调用push自然会报错。

正确的数组初始化方式

有两种常用的正确写法:

  1. 直接初始化空数组并标注类型
var itemObjects: Item[] = [];
  1. 使用Array构造函数(泛型写法)
var itemObjects = new Array<Item>();

额外注意:构造函数参数不匹配问题

你的代码里还有一个小问题:创建Item对象时,第二个参数传的是item.transactionType,但Item类的构造函数要求第二个参数是id,这会导致id属性被错误赋值,需要改成item.id。

修正后的完整代码片段:

// 正确初始化数组
var itemObjects: Item[] = [];

snapshot.forEach((doc: any) => {
  let docData = doc.data();
  let items = docData.items;
  items.forEach((item: any) => {
    // 修正构造函数参数,匹配id要求
    let itemObject = new Item(item.amount, item.id);
    console.log("converted item to Item Object:", itemObject);
    itemObjects.push(itemObject);
  });
});

内容的提问来源于stack exchange,提问作者ohu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:15:50