Angular:如何识别带有ID的JSON对象?

时间:2018-10-11 14:00:52

标签: arrays json angular object

为了希望简化我的问题,我将其分解如下:

我的理解

如果这是我的对象:

{ 
     things: [{
         'text': 'version'
         'short': 'v',
         'order': 1,
         'id': 'A'
     },{
         'text': 'update'
         'short': 'u',
         'order': 2,
         'id': 'B'
     }]
}

...然后这是我的类型类:

 export class Thing {
     text: string;
     short: string;
     order: number;
     id: string;
 }

我不明白的东西

如果是我的数据:

 { things: {
         'A': {
             'text': 'version'
             'short': 'v',
             'order': 1,
             'id': 'A'
         },
         'B': {
             'text': 'update'
             'short': 'u'
             'order': 2
             'id': 'B'
         }
     }
 }

...那么类型类是...?

我尝试了一些非常有创意,没有效果的尝试,以使此方法无济于事。我也希望我能弄清楚该非数组数组(无方括号)的用途。抱歉,如果这是重复的话。

1 个答案:

答案 0 :(得分:4)

在第二种情况下,您的things类型将是这样的index type

interface ThingHolder {
    [key: string]: Thing;
}

这表示键是字符串,值是Thing

data的接口将具有以下类型的things属性:

interface AppropriateNameHere {
  things: ThingHolder;
}

因此,编译器对此感到满意:

const data : AppropriateNameHere = {
  things: {
    'A': {
      'text': 'version',
      'short': 'v',
      'order': 1,
      'id': 'A'
    },
    'B': {
      'text': 'update',
      'short': 'u',
      'order': 2,
      'id': 'B'
    }
  }
};

Live Example在TypeScript游乐场。