typescript - 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 错误。这是我应该保留在我的代码中的吗?
解决方案
您可以使用类型记录
export type CompanysType = Record<string, YourType|Interface>
推荐阅读
- c++ - 声明一个类的变量而不创建它的实例
- python - 如何将 tkinter 的 Entry 字段中的用户输入传递给外部类/方法?
- c - 为什么我的 PCI-e I/O 寄存器读取似乎被缓存了?
- python - 修改日志文件的名称以包含 jobid
- java - 在 Java 中不保存对象实例是否被认为是不好的做法或完全不是?
- c# - CORS - 我需要 webconfig 和 asax.cs 文件来避免错误吗?
- php - 两个 foreach 与数组一起使用
- python - 如何连续增加二维列表
- python - Kivy Scrollview 的变色问题
- rest - RESTful 查询 API 设计