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属性。