首页 > 解决方案 > TypeScript - 如何使用动态键键入接口对象

问题描述

我刚开始使用 typeScript,我尝试输入一些从我的 API 获得的数据。

[编辑] 如果我的 API 向我发送一组“简单”公司对象,如下所示:

"companies": [
  {
    "id": "foo",
    "label": "Foo",
    "someNumber": 20,
    "someOtherNumber": 3
  },
  {
    "id": "bar",
    "label": "Bar",
    "someNumber": 20,
    "someOtherNumber": 0
  }
]

我会有CompanyInterface这样的:

export interface CompanyInterface {
  label: string,
  someNumber: number|null,
  someOtherNumber: number,
}

我可以这样做:private companies: Array<CompanyInterface> = [];

但是,我的 API 向我发送了一个由动态键索引的对象的公司列表:

"companies": {
  "foo": {
    "label": "Foo",
    "someNumber": 20,
    "someOtherNumber": 3
  },
  "bar": {
    "label": "Bar",
    "someNumber": 20,
    "someOtherNumber": 0
  }
}

我的界面看起来像这样:

export interface CompanyInterface {
  [key: string]: {
    label: string,
    someNumber: number|null,
    someOtherNumber: number,
  }
}

那么输入我的companies属性的最佳方式是什么?

[信息] 我试过 @aleksxor 的回答:private companies: CompanyInterface = {}我没有任何 TS 错误。这是我应该保留在我的代码中的吗?

标签: typescriptobjecttypesinterface

解决方案


您可以使用类型记录

export type CompanysType = Record<string, YourType|Interface>


推荐阅读