I have a function in a service that retrieves an array of objects with configurations. I'm trying to assign the return type to this method as Observable<GameInfo[]> but I'm getting the error:
Type 'Observable<object>' is not assignable to type 'Observable<GameInfo[]>'.
   Type '{}' is missing the following properties from type 'GameInfo[]': length, pop, push, concat, and 29 more.
I created interface for data validation that looks like this:
export default interface GameInfo {
  type: string;
  prizes: any;
  nameLocalKey: string;
  ticketPrice: number;
}
and tried to apply it, but it was unsuccessful.
It's my function that should return the Observable array:
  getGameList$(): Observable<GameInfo[]> {
    return this.httpService.get<GameInfo[]>(BackendRoutes.GameList);
  }
Data format:
[
    {
        "type": "BINGO_75",
        "prizes": [
            {
                "name": "Prize 1",
                "nameLocaleKey": "PRIZES.BINGO_75.PRIZE_1",
                "winAmount": 10,
                "patterns": [
                    {
                        "type": "HORIZONTAL",
                        "count": 1
                    },
                    {
                        "type": "VERTICAL",
                        "count": 1
                    },
                    {
                        "type": "DIAGONAL",
                        "count": 1
                    }
                ]
            },
            {
                "name": "Prize 2",
                "nameLocaleKey": "PRIZES.BINGO_75.PRIZE_2",
                "winAmount": 10,
                "patterns": [
                    {
                        "type": "HORIZONTAL",
                        "count": 2
                    },
                    {
                        "type": "VERTICAL",
                        "count": 2
                    },
                    {
                        "type": "DIAGONAL",
                        "count": 2
                    }
                ]
            },
            {
                "name": "Prize 3",
                "nameLocaleKey": "PRIZES.BINGO_75.PRIZE_3",
                "winAmount": 10,
                "patterns": [
                    {
                        "type": "HORIZONTAL",
                        "count": 3
                    },
                    {
                        "type": "VERTICAL",
                        "count": 3
                    }
                ]
            },
            {
                "name": "Prize 4",
                "nameLocaleKey": "PRIZES.BINGO_75.PRIZE_4",
                "winAmount": 10,
                "patterns": [
                    {
                        "type": "HORIZONTAL",
                        "count": 4
                    },
                    {
                        "type": "VERTICAL",
                        "count": 4
                    }
                ]
            },
            {
                "name": "Full house",
                "nameLocaleKey": "PRIZES.BINGO_75.PRIZE_5",
                "winAmount": 10,
                "patterns": [
                    {
                        "type": "HORIZONTAL",
                        "count": 5
                    }
                ]
            }
        ],
        "nameLocaleKey": "GAMES.BINGO_75",
        "ticketPrice": 10
    }
]
EDITED
Here the code that send the data from server and we process this response inside function getGameList$()
const express = require("express");
const router = express.Router();
const gameList = require("../config/bingo");
router.get("/list", (req, res) => {
  const keys = Object.keys(gameList);
  const listOfGameConfigurations = keys.map((key) => {
    const currentGameConfiguration = gameList[key];
    const {
      type,
      prizes,
      nameLocaleKey,
      tickets: { price: ticketPrice },
    } = currentGameConfiguration;
    const newObject = { type, prizes, nameLocaleKey, ticketPrice };
    console.log(newObject);
    return newObject;
  });
  return res.json(listOfGameConfigurations);
});
module.exports = router;
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import BackendRoutes from 'src/app/core/enums/backend-routes';
import { HttpService } from 'src/app/core/services/http.service';
import GameInfo from '../interfaces/game-info';
@Injectable({
  providedIn: 'root',
})
export class GameService {
  constructor(private httpService: HttpService) {}
  getGameList$(): Observable<GameInfo[]> {
    return this.httpService.get(BackendRoutes.GameList);
  }
}
EDITED 2
Added httpService code:
export class HttpService {
  private httpOptions = {
    headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
    withCredentials: true,
  };
  private domain = environment.domain;
  constructor(private http: HttpClient) {}
  post(
    route: string,
    body: object,
    httpOptions: object = this.httpOptions
  ): Observable<object> {
    return this.http.post(`${this.domain}${route}`, body, {
      ...this.httpOptions,
      ...httpOptions,
    });
  }
  get(
    route: string,
    httpOptions: object = this.httpOptions
  ): Observable<object> {
    return this.http.get(`${this.domain}${route}`, {
      ...this.httpOptions,
      ...httpOptions,
    });
  }
}
getGameList$