Dies ist mein erster Beitrag und ich möchte Sie um Hilfe zu Thema bitten, ich kann nicht scheinen, irgendwelche Informationen zu finden.Warum und wie wird das Angular2/Typescript-Modell verwendet?
Ich habe Angular 2 durch ein Handbuch und ng-Buch lernen "SpotifyApp" zu lernen, und ich stieß auf die Best Practice, um Typoskript Klassenmodell von Künstler und Album zu erstellen, importieren Sie es in meine Komponente und setzen Ergebnis von HTTP Anfrage an dieses Modell.
Jetzt sehe ich keinen Unterschied von regulären Array, ich weiß nicht, warum ich es tue, und ich kann keine relevanten Informationen zu dem Thema finden. Es funktioniert, aber ich kann nicht sehen, was es tut. Ich habe sogar versucht, es wie im Beispiel unten zu brechen es zufällige Attribute zu geben, und keinen Unterschied
Ich ging zu offiziellen Angular Docs, und ich habe keinen Unterschied zu sehen, ging durch Typoskript Tutorial auf Tutorials zeigen und nicht erwähnen irgendetwas darüber. Meine Frage ist warum ich ein Model brauche, benutze ich es falsch? Und wofür verwende ich es in der Anwendung?
artist.model.ts
import { Album } from './album.model'
export class Artist{
id: number;
name: number;
peackock: string;
genres: any;
albums: Album[];
}
album.model.ts
export class Album {
id: number;
}
spotify-app.service
@Injectable()
export class SpotifyAppService {
constructor(private http: Http) {
}
searchByTrack(query: string) {
let params: string = [
`q=${query}`,
`type=artist`
].join("&");
let queryUrl = `https://api.spotify.com/v1/search?${params}`;
return this.http.get(queryUrl).map(res => res.json());
}
}
Spotify-app.component.ts
export class SpotifyAppComponent implements OnInit {
searchStr: string;
artist: Artist[];
constructor(private spotifyService: SpotifyAppService) { }
searchMusic(query: string):void{
this.spotifyService.searchByTrack(query)
.subscribe(res => {
this.artist = res.artists.items;
});
};
ngOnInit() {
}
}
Ich erkannte, dass es Objekt ist, aber immer noch meine Frage ist, was es tut? Und warum benutze ich es? Zuerst dachte ich, dass nur Antworten mit bestimmten Attributen darauf eingehen können, aber das ist es nicht. –
@WIndWindstorm verwenden Sie das Modell b/c Sie alle Vorteile der starken Typisierung: Erkennen von Fehlern bei der Kompilierung, Code-Vervollständigung, Klarheit für Entwickler, etc. Sie verwenden es b/c Sie möchten Ihren Code strukturieren/modularisieren. Aber wenn der Typescript-Code in Javascript kompiliert wird, gehen alle starken Typisierungsregeln aus dem Fenster ... so wird das Modell zur Laufzeit nicht verhindern, dass Sie Attribute zuweisen, die nicht zur Klasse gehören. Sie könnten dem Modell Getter/Setter oder Methoden hinzufügen, um diese Dinge zu erzwingen ... –
Was bedeuten die Vorteile einer starken Typisierung? Weil ich keinen Unterschied zum normalen Array sehe? Ich habe dieses Objekt gerade deklariert, ich habe es importiert und ich kann jedem Wert zuweisen, den ich möchte. Was ist der Vorteil? –