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

TypeScript问题:带默认值的isCollapsed属性为undefined

问题分析

核心问题是类型不匹配导致构造函数未执行:

  • myEntity是EntityModel[]类型数组,但myFunction期望接收EntityVM类型参数
  • 直接传递EntityModel实例时,EntityVM的构造函数并未被调用,isCollapsed的默认值false自然不会被初始化,所以该属性最终是undefined
解决方案

1. 手动完成类型转换

调用myFunction前,把EntityModel实例逐个转换成EntityVM实例,触发构造函数的默认值逻辑:

// 将EntityModel数组转换为EntityVM数组
const convertedEntities = myEntity.map(item => new EntityVM(item));
// 按实际需求传递单个实例或数组给函数
myFunction(convertedEntities[0]); // 示例:传递第一个转换后的实例

2. 修正函数参数类型(适配数组场景)

如果myFunction本来就是要处理一组实体,直接修改参数类型为EntityVM[],确保类型匹配:

public myFunction(myEntities: EntityVM[]) {
  myEntities.forEach(entity => {
    // 此时entity.isCollapsed会是构造函数设置的默认值false
  });
}

3. 可选临时方案:为原接口补充属性(不推荐)

如果允许修改EntityModel接口,可以添加可选的isCollapsed属性,但这违背了视图模型(VM)和数据模型(Model)的职责分离原则,仅适合临时场景:

export interface EntityModel {
  // 原有属性...
  isCollapsed?: boolean;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:32:08