Большие интергеры (длинные) в угловых HTTP-ответах округляются - PullRequest
0 голосов
/ 01 мая 2018

Я звоню в веб-сервис, который возвращает

[
    {
        "product_id": 4253579243953800463,
        "timestamp": 1525107472,
        "event_type": "PRODUCT_VIEW",
        "event_count": 1
    },
    {
        "product_id": 788410946016999754,
        "timestamp": 1525107472,
        "event_type": "PRODUCT_VIEW",
        "event_count": 1
    }
]

Я закодировал сервис в своем угловом коде, который выполняет вызов этой серверной службы

  getLastRecommendations(): Observable<UserProductEvent[]> {
   return this.http.get<UserProductEvent[]>(url, HTTP_OPTIONS)
  }

Я вижу, что ответ ID продукта имеет тип long, и его значение больше, чем Number.MAX_SAFE_INTEGER в javascript, поэтому я хочу, чтобы идентификатор продукта обрабатывался как строка. в противном случае значения округляются до

[
    {
        "product_id": 4253579243953800700,
        "timestamp": 1525107472,
        "event_type": "PRODUCT_VIEW",
        "event_count": 1
    },
    {
        "product_id": 788410946016999800,
        "timestamp": 1525107472,
        "event_type": "PRODUCT_VIEW",
        "event_count": 1
    }
]

Я попытался изменить тип product_id на строку в моем объявлении интерфейса машинописного текста, но он все еще не работает.

Как я могу заставить машинописный текст / javascript рассматривать поле как строку?

Может ли кто-нибудь помочь, пожалуйста?

export interface UserProductEvent {
    product_id: string;
    timestamp: number;
    event_type: string;
    event_count: number;
}

и я не могу изменить бэкэнд. (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...