初始化对象数组 - Angular

Mar*_*rio 9 arrays object typescript angular

我有一个对象数组,当我尝试访问它时,我收到一条错误消息:

类型错误:无法设置未定义的属性“ID”

我的代码如下:

export class Carimplements OnInit {
  pieces: Piece[] = [];

  test(pos){
    this.pieces[pos].ID = "test";
  }
}
Run Code Online (Sandbox Code Playgroud)

成为一个对象

export class Piece{
    ID: string;
    doors: string;
}
Run Code Online (Sandbox Code Playgroud)

test(pos)从具有有效位置的 HTML调用。

我想我正在尝试访问尚未初始化的数组的位置 X。我怎么能做到?是否可以创建构造函数?

mar*_*tin 13

  • 在 TypeScript 中定义数组类型的正确语法是这样的:

    pieces: Piece[] = [];
    
    Run Code Online (Sandbox Code Playgroud)
  • 该错误是运行时错误。当你运行你的应用程序时,你有一个空数组pieces(但变量仍然用 初始化[])但是你调用test(whatever)它试图访问一个whatever不存在的数组元素。

    例如,您可以这样做:

    pieces: Piece[] = [{
      ID: '1',
      doors: 'foo'
    }];
    
    Run Code Online (Sandbox Code Playgroud)

    然后使用test(0).