如何在打字稿接口中获取类型数组的存储API响应?

How to get store API response of type array in typescript interface?

apireturns这样的回复:

[
  {
    "id": "string",
    "code": "string",
    "name": "string",
  }
]

例如它将是

[
  {
    "id": "abc",
    "code": "CODE1",
    "name": "name1",
  },
  {
    "id": "cdf",
    "code": "CODE2",
    "name": "name2",
  }
]

如何将其存储在打字稿界面中?我最初是这样尝试的

export interface promotionCodes {
  id: string,
  code: string,
  name: string,
}

export interface getPromotionsResponse {
  data: promotionCodes[]
}

我称之为:

return await this.get<getPromotionsResponse>(
  `myurl`,
);

但我认为这行不通,因为我的调用中没有返回任何名为 'data' 的内容,但我不确定如何存储它?感谢您的帮助

您可以创建一个 type,它是另一种类型的数组:

export type getPromotionsResponse = promotionCodes[];

如果您必须创建一个interface而不是type,您需要这样做:

export interface getPromotionsResponse {
    [index: number]: promotionCodes;
}

或者更好的是,正如评论中 Mack 所建议的,您还可以扩展数组接口,这样您的新类型将具有数组的所有功能。

export interface getPromotionsResponse extends Array<promotionCodes> {}

您应该为此目的使用打字稿泛型 这是文档的 link: https://www.typescriptlang.org/docs/handbook/2/generics.html