Como obter o object Date do json Response no typescript

Aqui está o meu json:

{ "data": [ { "comment": "3541", "datetime": "2016-01-01" } ] } 

Aqui está o modelo:

 export class Job { constructor(comment:string, datetime:Date) { this.comment = comment; this.datetime = datetime; } comment:string; datetime:Date; } 

Inquerir:

 getJobs() { return this._http.get(jobsUrl) .map((response:Response) => response.json().data) } 

O problema é que, depois de transmitir para Job[] eu espero que a propriedade datetime seja Date mas é string. Não deveria ser convertido para o object Data? O que estou perdendo aqui?

@Gunter está absolutamente correto. A única coisa que eu gostaria de acrescentar é, na verdade, como deserializar o object json mantendo suas propriedades de data como datas e não strings (a partir do post referenciado não é tão fácil ver essa abordagem).

Aqui está minha tentativa:

 export class Helper { public static Deserialize(data: string): any { return JSON.parse(data, Helper.ReviveDateTime); } private static ReviveDateTime(key: any, value: any): any { if (typeof value === 'string') { let a = /\/Date\((\d*)\)\//.exec(value); if (a) { return new Date(+a[1]); } } return value; } } 

Você pode ver essa abordagem, por exemplo, aqui: Função JSON.parse no exemplo dateReviver.

Espero que isto ajude.

Não há como saber para o TS / JS que esse valor é uma data. É uma string e tratada como tal. Outros tipos de dados são distinguíveis, mas o JSON não fornece nenhum suporte especial para data. Você precisa convertê-lo manualmente.

Veja por exemplo esta discussão como transportar e converter uma data usando JSON Como formatar uma data do Microsoft JSON?