Arrays 为对象数组中的对象指定属性

Arrays 为对象数组中的对象指定属性,arrays,angular,typescript,Arrays,Angular,Typescript,我有一个如下所示的界面: export interface Stats { lastFiveResults: Object[]; } export interface Stat { idresults: number, gold: number, mana: number, xp: number } 对象数组如下所示: (5) [{…}, {…}, {…}, {…}, {…}] 0: {idresults: 500, gold:

我有一个如下所示的界面:

    export interface Stats {

    lastFiveResults: Object[];

}
export interface Stat {
    idresults: number, 
    gold:  number, 
    mana:  number, 
    xp:  number
}
对象数组如下所示:

(5) [{…}, {…}, {…}, {…}, {…}]
0: {idresults: 500, gold: 567740, mana: 305370, xp: 1800}
1: {idresults: 501, gold: 492381, mana: 602707, xp: 1450}
2: {idresults: 502, gold: 241012, mana: 303954, xp: 810}
3: {idresults: 503, gold: 415778, mana: 261254, xp: 810}
4: {idresults: 504, gold: 327266, mana: 427803, xp: 0}
当我尝试像这样访问它时

data.lastFiveMatches[0].gold
I get
属性黄金在类型对象上不存在


所以我的问题是如何指定这些属性?

您可以这样声明:

    export interface Stats {

    lastFiveResults: Object[];

}
export interface Stat {
    idresults: number, 
    gold:  number, 
    mana:  number, 
    xp:  number
}
和初始化:

yourStats: Stat[]= [];

fooMethod() {    
    for (let i = 0; i<10; i++) {
        console.log('1');
        this.yourStats.push({idresults: i, gold: i, mana: i, xp: i})
    } 
    console.log(`Your stats is`, this.yourStats);    
}  
yourStats:Stat[]=[];
fooMethod(){

对于(设i=0;i),可以定义另一个接口来指定对象中的属性类型

interface myObject {
  idresults: number,
  gold: number,
  mana: number,
  xp: number
}

export interface Stats {

    lastFiveResults: myObject[];

}
在ts文件中:

data= new Stats();
console.log(data.lastFiveMatches[0].gold)

您可以为列表中的对象定义
接口
类型

export interface Stats {
    lastFiveResults: MyObject[];
}

export interface MyObject {
  idresults: number
  gold: number
  mana: number
  xp: number
}
请看这个。

试试这个:

if (data.lastFiveMatches && data.lastFiveMatches.length > 0) {    
   const something = data.lastFiveMatches[0].gold || 0;
}

您应该创建接口
结果项

export interface ResultItem {
  idresults: number;
  gold: number; 
  mana: number;
  xp: number;
}

export interface Stats {
  lastFiveResults: ResultItem[];
}
…然后:

data.lastFiveMatches[0].gold;

lastFiveMatches.length==0时,似乎出现了错误。如果length==0,他将得到“无法读取未定义的属性”。问题是他没有键入lastFiveResults属性。