TypeScript中如何正确初始化Item对象数组?解决push报错问题
问题解决:数组未初始化导致的push报错
你遇到的Cannot read properties of undefined (reading 'push')错误,核心原因是只声明了数组的类型,但没有初始化数组实例——你写的var itemObjects: [Item]只是告诉TypeScript这个变量应该是Item类型的数组,但并没有给它分配一个空数组实例,所以变量实际值是undefined,调用push自然会报错。
正确的数组初始化方式
有两种常用的正确写法:
- 直接初始化空数组并标注类型
var itemObjects: Item[] = [];
- 使用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
相关产品推荐
相关产品推荐

