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

Angular报Cannot set properties of undefined (setting 'key')错误咨询

报错原因

你仅给myClosureItems声明了ClosureAllItems类型,且用非空断言!告诉TypeScript该属性后续一定会被赋值,但实际没有对它做初始化操作,它的运行时值是undefined,直接对undefined执行属性赋值自然会抛出对应错误,和你定义的索引签名没有关联。

修复方案

有两种常用的修复方式:

  • 方式1:声明属性时直接初始化空对象
// 用类型断言处理初始空对象和接口结构的暂时不符,后续赋值完会符合接口要求
myClosureItems: ClosureAllItems = {} as ClosureAllItems;
constructor(){}
  • 方式2:在setitems方法赋值前先完成对象初始化
setitems(){
    // 先初始化空对象再赋值属性
    this.myClosureItems = {} as ClosureAllItems;
    let k:string[]=["Financials","AR2","Risk","Issue"];
    k.forEach(element=>{
         this.myClosureItems[element]={id:element,name:element,visibility:true}
    });
}

如果有严格的类型校验要求,你可以在赋值完成后增加逻辑校验ClosureAllItems中声明的所有必填固定属性都已被正确赋值,避免遗漏属性的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:45:04