javascript - Skapa instanser av objekt från JSON
Jag är ganska ny på Typescript så jag föreställer mig att detta är en ganska dum fråga, men jag har en array med JSON-objekt som jag vill mappa till en Panel-klass.
När min PanelsService-klass instansieras vill jag även instansiera min array av Panel-objekt.
Det jag har hittills:
PanelsService.ts
import {Panel} from './panel';
declare var _: any;
export class PanelsService {
public panels: Array<Panel>;
public customPanels: Array<Panel>;
constructor(private _http:Http) {
this.panels = window['panels']['views'];
}
}
Från detta blir ingen av mina Panels instansierade (jag har en logg i konstruktorn). Uppenbarligen skulle jag kunna loopa över window['panels']['views'] och göra något som this.panels.push(new Panel(myPanel)), men det verkar som att det måste finnas ett bättre sätt.
För vad det är värt, min Panel-klass är bara en massa egenskaper och en konstruktor.
Svar #1
Om data i window['panels']['views'] är en array av Panel, behöver du bara konvertera den för att göra TypeScript nöjd:
this.panels = <Panel[]>(window['panels']['views']);
Detta kommer inte att ändra något för den genererade JavaScript, men det kommer att kompileras.
Observera att det aldrig kommer att anropa Panel-konstruktorn. Ditt objekt i window['panels']['views'] är redan instansierat, så det är bara en typomvandling.
