我有一个对象数组,当我尝试访问它时,我收到一条错误说:
TypeError:无法设置未定义的属性“ID”
我的代码如下:
export class Carimplements OnInit {
pieces: Piece[] = [];
test(pos){
this.pieces[pos].ID = "test";
}
}
成为一个对象
export class Piece{
ID: string;
doors: string;
}
我从HTML中使用有效位置调用test(pos)
。
我想我正在尝试访问尚未初始化的数组的位置X.我怎么能这样做?是否可以创建构造函数?
答案 0 :(得分:1)
在TypeScript中定义数组类型的正确语法是:
pieces: Piece[] = [];
错误是运行时错误。当您运行应用时,您有一个空数组pieces
(但该变量仍然使用[]
进行了初始化),但是您调用了test(whatever)
来尝试访问数组元素whatever
#39; t存在。
你可以这样做:
pieces: Piece[] = [{
ID: '1',
doors: 'foo'
}];
然后使用test(0)
。
答案 1 :(得分:0)
您可以尝试以下方法
test(pos){
if(pos < this.pieces.length)
this.pieces[pos].ID = "test";
else
// throw error
}
答案 2 :(得分:0)
这个怎么样?
export class Carimplements OnInit {
pieces: Piece[] = [];
test(pos){
this.pieces[pos] = {ID: "test"};
}
}
答案 3 :(得分:0)
let pieces: Piece[] = [];
//initialize object before assigning value
test(pos){
this.pieces[pos] = new Piece();
this.pieces[pos].ID = "test";
}