具有reference和push()方法的TypeScript对象数组

时间:2018-09-07 07:28:52

标签: arrays typescript object interface

最近我在代码中发现了一个障碍。我正在使用我的自定义对象和它们的数组。我发现一种情况下push()方法有效,而另一种情况下无效。

第一种情况(正常):

class MyObject{
  private reference: d3.Selection<SVGElement>;

  public constructor(ref: d3.Selection<SVGElement>){
    this.reference = ref;
  }
}

interface ViewModel{
  objects: MyObject[] 
}

class MyApp{
  private root: d3.Selection<SVGElement>

  private viewModel: ViewModel;

  constructor(options: Type){
    this.root = options.root
    this.viewModel.objects.push(new MyObject(this.root))
  }
}

第二种情况(无效):

class MyObject{
  private reference: d3.Selection<SVGElement>;

  public constructor(ref: d3.Selection<SVGElement>){
    this.reference = ref;
  }
}

class MyApp{
  private root: d3.Selection<SVGElement>

  private objects: MyObject[];

  constructor(options: Type){
    this.root = options.root
    this.objects.push(new MyObject(this.root)) //seems to freeze the whole program
  }
}

我在做什么错? 任何帮助将不胜感激。

米哈尔

1 个答案:

答案 0 :(得分:0)

您尚未初始化objects数组:

private objects: MyObject[] = [];

那可能有用:)

尽管如此,您尚未在“工作”示例中初始化viewModel。所以我想你发布了代码的剥离版本?