我有一个看起来像这样的界面:
export interface Stats {
lastFiveResults: Object[];
}
对象数组看起来像这样:
(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
我得到Property gold does not exist on type object
所以我的问题是如何指定这些属性?
答案 0 :(得分:1)
您应该创建接口Item
和ResultItem
:
export interface ResultItem {
idresults: number;
gold: number;
mana: number;
xp: number;
}
export interface Stats {
lastFiveResults: ResultItem[];
}
...然后:
data.lastFiveMatches[0].gold;
答案 1 :(得分:0)
您可以这样声明:
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);
}
答案 2 :(得分:0)
您可以定义另一个接口来指定对象中属性的类型。
interface myObject {
idresults: number,
gold: number,
mana: number,
xp: number
}
export interface Stats {
lastFiveResults: myObject[];
}
答案 3 :(得分:0)
export class Stats {
lastFiveResults: Object[]=[{…}, {…}, {…}, {…}, {…}]
}
在您的ts文件中:
data= new Stats();
console.log(data.lastFiveMatches[0].gold)
答案 4 :(得分:0)
您可以在列表中为对象定义interface
或type
export interface Stats {
lastFiveResults: MyObject[];
}
export interface MyObject {
idresults: number
gold: number
mana: number
xp: number
}
请参阅此playground。
答案 5 :(得分:0)
尝试一下:
if (data.lastFiveMatches && data.lastFiveMatches.length > 0) {
const something = data.lastFiveMatches[0].gold || 0;
}