TypeScript带引用和push()方法的对象数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TypeScript带引用和push()方法的对象数组相关的知识,希望对你有一定的参考价值。

最近我发现我的代码中有一个障碍。我正在使用我的自定义对象和它们的数组。我找到了一个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
  }
}

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

迈克尔

答案

你还没有初始化你的objects阵列:

private objects: MyObject[] = [];

那可能会奏效:)

虽然,你还没有在你的'工作'例子中初始化你的viewModel。所以我想你发布了代码的剥离版本?

以上是关于TypeScript带引用和push()方法的对象数组的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript系列教程14Array数组对象的常见的方法

TypeScript系列教程13Array数组对象的常见的方法

push_back 对象引用

如何在 TypeScript 中引用 JSON 文件?

TypeScript,接口(Interfaces),对象、数组和函数的类型

我应该使用啥 TypeScript 类型来引用我的道具中的匹配对象?