angular - Angular2 i Typescript, trebam li deklarirati modele za svaki API poziv
Dolazeći iz Angular 1 okruženja, navikao sam sve svoje modele deklarirati kao POCO-e, a moji web api pozivi su vraćali podatke.
datacontext.query('api/OwnerData/GetOwners').then(function (d) {
vm.domain = d;
}
Sada s Angular2 i Typescript, imam dvije opcije. Ili mogu koristiti mapu i dobiti JSON objekt te ga dodijeliti svojstvu u komponenti, a zatim ga koristiti u prikazu.
this.http.get(`/api/OwnerData/GetOwners`, { headers: this.getHeaders() })
.map(r => r.json())
.catch(handleError);
Inače, mogu koristiti drugačiju funkciju mapiranja kako bih to mapirao na objekt snažno tipiziran. Ali ako krenem tim putem, morat ću definirati cijeli domen model u back endu u TypeScriptu. Plus seriju metoda za njihovo mapiranje. Osjećam da je to previše posla i ponavljanja. S druge strane, ako idem s JSON-om, izgubio bih sigurnost tipa.
Koja su vaša mišljenja o ovome. Hvala na vašem vremenu. (koristim Angular 2.4 i Typescript 2.1.5)
Odgovor #1
Možete jednostavno izvršiti pretvorbu u sučelja koja točno odgovaraju JSON-u. Na taj način dobivate automatsko dovršavanje i pogreške pri kompajliranju, ali ne trebate implementirati nikakve metode. Sučelja se zanemaruju u vrijeme izvođenja. Stoga ne dobivate nikakvu sigurnost tipova u vrijeme izvođenja.
interface MyData {
a:string;
b:number;
}
this.http.get(`/api/OwnerData/GetOwners`, { headers: this.getHeaders() })
.map(r => r.json() as MyData)
.catch(handleError);
