【问题标题】:How can i create a model with date index?如何创建具有日期索引的模型?
【发布时间】:2019-09-17 10:14:46
【问题描述】:

我想使用 Angular 访问 API。它给了我一个以日期为索引的数组。

我已经尝试过创建模型,但很遗憾,它不起作用。 我该如何更改它?

API 答案如下所示

{
    "Information": {
        "Created": "2019-04-25",
        "Version": "1.2"
    },
    "Files": {
        "2019-04-26": {
           'name': 'file1',
           'size': 5,
        },
        "2019-04-25": {
            'name': 'file2',
            'size': 3,
        },
    ...
        }
    }

我的模型是这样的

export class Model {
  'Information': {
    'Created': String,
    'Version': String,
  };
  Files: [

    {
     'Date': String,
     'name': String,
     'size': number,
    }
    ];

}

【问题讨论】:

  • 请发布有效的 json 以获得快速答案。

标签: json angular typescript api


【解决方案1】:

你想要的是一个index signature,看起来像这样。

export class Model {
  'Information': {
    'Created': string,
    'Version': string,
  },
  'Files': { 
    [date:string]: {
     'name': string,
     'size': number,
    }
  }
}

它表明类 Model 有一个属性 Files,它是一个带有字符串键和值的对象,具有字符串属性名称和数字属性大小。这并不限制键必须匹配某个日期模式,据我所知,我认为没有办法做到这一点。

您也可以编写一个函数,将此响应对象映射到具有 Files 数组的对象,其中数组中的每个对象都包含日期。该映射函数是一个不同的问题,但模型看起来像这样:

export class Model {
  'Information': {
    'Created': string,
    'Version': string,
  },
  'Files': { 
    'date': string, // could also type this as Date if you do the conversions
    'name': string,
    'size': number,
  }[]
}

【讨论】:

  • 感谢您的回答。不幸的是,我没有成功为其编写函数。你能帮帮我吗?
  • 写一个映射函数是一个不同的问题,这里的问题是如何为你的问题中的对象写类型声明,我已经回答过了。如果您想做其他事情,请接受此答案并使用您尝试的地图功能提出另一个问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
  • 2020-10-02
  • 2021-07-27
  • 2018-02-12
  • 2019-11-29
  • 2019-11-04
  • 1970-01-01
相关资源
最近更新 更多