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

如何在初始化Session实例时直接为part_a和part_b赋值空Part对象?

当然可以啦!你完全不用每次实例化 Session 后再手动赋值 part_a 和 part_b,有几种简洁的方式能在初始化阶段就让它们自动成为空的 Part 对象,下面给你详细介绍:

方案1:构造函数参数直接设置默认值

这是最直接的方式,在 Session 的构造函数参数里,给 part_a 和 part_b 设置默认值为 new Part(),同时可以去掉可选标记(因为默认值已经保证了属性不会是 undefined):

export class Part { 
  constructor( 
    public id?: number, 
    public part?: string, 
    public type?: string 
  ) {} 
}

export class Session { 
  constructor( 
    public genre?: string, 
    public ordre_interface?: number, 
    public nb_serie?: number, 
    public id?: number, 
    public part_a: Part = new Part(), // 自动初始化为空Part
    public part_b: Part = new Part() 
  ) {} 
}

这样当你创建 Session 实例时,哪怕不传递 part_a 和 part_b 参数,它们也会自动被赋值为新的空 Part 对象;如果需要传入自定义的 Part 实例,也能正常传递,完全不影响灵活性。

方案2:保留参数可选性,在构造函数体内处理

如果你希望 part_a 和 part_b 的参数依然是可选的(允许传入 undefined),但属性最终不会是 undefined,可以用空值合并运算符在构造函数体内处理:

export class Session { 
  public part_a: Part;
  public part_b: Part;

  constructor( 
    public genre?: string, 
    public ordre_interface?: number, 
    public nb_serie?: number, 
    public id?: number, 
    part_a?: Part, 
    part_b?: Part 
  ) {
    // 若传入的part_a是undefined,就用新的空Part对象
    this.part_a = part_a ?? new Part();
    this.part_b = part_b ?? new Part();
  } 
}

这种方式既保留了参数的可选性,又能确保类的属性始终是有效的 Part 实例,不会出现 undefined。

方案3:类属性初始化器(无需构造函数参数)

如果你的场景不需要通过构造函数传递 part_a 和 part_b,可以直接在类的属性定义阶段就初始化:

export class Session { 
  // 直接在属性定义时初始化空Part对象
  public part_a: Part = new Part();
  public part_b: Part = new Part();

  constructor( 
    public genre?: string, 
    public ordre_interface?: number, 
    public nb_serie?: number, 
    public id?: number 
  ) {} 
}

这种写法最简洁,实例创建后 part_a 和 part_b 直接就是空的 Part 对象,后续需要修改的话直接赋值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:42:33