Angolare: typescript che interpreta la risposta JSON come modello di object non funzionante

Ho un problema mentre provo a lanciare una risposta JSON all’object, tutte le proprietà del mio object sono stringhe è normale?

Ecco la mia richiesta Ajax:

public getSingle = (keys: any[]): Observable => { return this._http.get(this.actionUrl + this.getKeysUrl(keys)) .map((response: Response) => response.json() as Badge ) .catch(this.handleError); } 

Ecco il mio modello di badge:

  export interface Badge { badgeNumber: number; authorizationLevel: number; endOfValidity: Date; } 

Ed ecco dove chiamo la funzione di servizio e sto affrontando il problema:

 this._badgeService.getSingle(this.ids).subscribe( (badge: Badge) => { console.log(typeof(badge.endOfValidity)); //  console.log(error); }); 

Questo è un po ‘difficile da spiegare:

Date è una class , questo significa che i valori di tipo Date devono essere creati attraverso una chiamata del costruttore. In altre parole, crea un’istanza di class con new Date(...) .

Il metodo Response.json restituirà solo un object in formato JSON e tale non contiene un’istanza di alcuna class, solo le mappe di chiave: proprietà.

Quindi, ciò che devi fare è convertire manualmente il valore restituito da .json () in un object Base. Questo può essere fatto come segue:

 public getSingle = (keys: any[]): Observable => { return this._http.get(this.actionUrl + this.getKeysUrl(keys)) .map(r => r.json()) .map(v => { badgeNumber: v.badgeNumber, authorizationLevel: v.authorizationLevel, endOfValidity: new Date(v.endOfValidity) // preferably this string should be in ISO-8601 format }) //the mapping step can be done in other ways most likely .catch(this.handleError); }