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

Angular TypeScript创建对象数组时赋值错误求助

问题分析与解决

你的问题核心非常明确:你初始化的stats是一个空数组,直接访问this.stats[0]得到的是undefined,自然无法给它的name属性赋值。

先还原你的代码场景:

数组类型定义

stats: Array<{ name: string, age : number }> = [];

尝试的赋值操作

this.stats[0]['name'] = 'x';

报错信息

ERROR TypeError: Cannot set property 'name' of undefined

针对你需求的解决方式

既然你需要保留这种动态数组的形式,且要通过索引直接赋值,那必须先确保目标索引位置存在一个符合类型的对象,再进行属性赋值:

  1. 先初始化对应索引的对象,再赋值属性
// 先创建符合类型的对象(可以带默认值)
this.stats[0] = { name: '', age: 0 };
// 再给name属性赋值
this.stats[0]['name'] = 'x';
  1. 或者一步完成对象创建与赋值
this.stats[0] = { name: 'x', age: 20 };

如果你的业务场景中不确定目标索引是否已经存在对象,可以先做个判断:

// 检查索引0的位置是否有有效对象,没有则初始化
if (!this.stats[0]) {
  this.stats[0] = { name: '', age: 0 };
}
this.stats[0]['name'] = 'x';

这样就能避免undefined的报错,同时满足你动态数组、直接索引赋值的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:09:34