Значение, возвращаемое API, не преобразовано в Date - PullRequest
0 голосов
/ 28 января 2019

В приложении Angular 7 у меня есть следующая модель:

public getTopPosts() {
  return this.httpClient.get<TopPostsResponse>>('top-posts');
}

Где TopPostsResponse:

export interface TopPostsResponse {
  id: number;
  title: string;
  created: Date;
}

Я вызываю службу в методе компонента:

getTopPosts(): Observable<PostModel[]> {

  return this.postService.getTopPosts().pipe(

    map((response: TopPostsResponse) => { 

      console.log(response.created);
      console.log(response.created instanceof Date);

      var created = new Date(response.created);
      console.log(created);
      console.log(created instanceof Date);

      return {
        id: response.id, 
        created: response.created,
        title: response.title
      };

    }));

}

Проблема в том, что когда я проверяю, является ли response.created датой, которую я получаю False:

console.log(response.created); >> 2019-01-24T13:03:10.123684
console.log(response.created instanceof Date); >> FALSE

var created = new Date(response.created); 
console.log(created); >> Thu Jan 24 2019 13:03:10 GMT+0000 (WET)
console.log(created instanceof Date); >> TRUE

Кажется, служба не преобразует значение, возвращаемое API, в тип Date, но все ещеявляется действительной датой, потому что я могу создать ее экземпляр.

Что мне не хватает?

1 Ответ

0 голосов
/ 28 января 2019

Typescript не преобразует автоматически необработанные данные из запроса в определенный тип.Вам придется анализировать его самостоятельно.

return {
    id: response.id, 
    created: new Date(response.created),
    title: response.title
  };

Компилятор Typescript запускается перед сборкой, а не во время выполнения.Поэтому он не знает, что придет в ответе от API.Код Typescript передается, а затем генерируется код javascript, поэтому проверка типа выполняется только при написании кода.После этого, когда он really runs, он не будет анализировать, какие данные поступают из внешнего источника.

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