Search code examples
javascripttypescriptinterfaceget

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


The api returns a response like this:

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

So for example it will be

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

How do I store it in a typescript interface? I initially tried it like this

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

export interface getPromotionsResponse {
  data: promotionCodes[]
}

and I call it as:

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

But I don't think this will work since I don't have anything named 'data' being returned in my call but I'm not sure how else to store it? Thanks for any help


Solution

  • You can create a type that is an array of the other type:

    export type getPromotionsResponse = promotionCodes[];
    

    If you have to create an interface and not a type, you'll need to do it like this:

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

    Or better yet, as Mack suggested in the comments, you can also extend the array interface, so your new type would have all the functionalities of an array.

    export interface getPromotionsResponse extends Array<promotionCodes> {}