tengo la siguiente interfaz
interface MyObj { myString: string; myNumber: string; myDate: Date; } this.http.get<MyObj>(this.getObjectsURL); Result: { "myString": "test", "myNumber": 12, "myDate": "2011-10-05T14:48:00.000Z"}Si obtengo los datos, el campo myDate es una cadena y no una fecha.
Si transformo MyObj en un JSON y lo analizo nuevamente, también obtengo una cadena de fecha, y no el tipo correcto. Eso es muy malo :-( ¿Es posible analizar typesafe (para solicitudes HTTP y Json Transform, también?) con transformación a los tipos de datos correctos?
Gracias :-)
Puede agregar una tubería para transformar la respuesta cuando se recibe.
Crear como servicio para realizar todas las llamadas api dentro del servicio
getYourObject() { return this.http.get(this.getObjectsURL) .pipe(map(resp => { resp.myDate = new Date(resp.myDate); return data; })); }de su componente y agregue el servicio como dependencia entonces
this.serviceName.getYourObject().subscribe((resp: MyObj)=> console.log(resp));Básicamente tiene dos tipos, una representación externa/seriada e interna/no serializada,
interface MyObj { myString: string; myNumber: string; myDate: Date; } interface MyObjSerialized { myString: string; myNumber: string; myDate: string; } Puede usar el primer tipo para anotar el resultado de la llamada http.get
const result: Observable<MyObjSerialized> = this.http.get('http://some.where');A continuación, debe analizarlo explícitamente y convertirlo al tipo de datos interno:
const parsed: Observable<MyObj> = result.pipe( // alternative: provide a method reference instead of arrow function // angular brackets <From,To> optional map<MyObjSerialized, MyObj>(res => ({ ...res, myDate: new Date(res.myDate) }) );Encontré esta biblioteca: https://github.com/pichillilorenzo/jackson-js Tal vez esta sea mi solución ... ¡Lo probaré!