2017-04-06 13 views
2

これは私の最初の投稿であり、私はトピックのヘルプをお願いしたいと思います。私は何の情報も見つけられないようです。なぜAngular2/Typescriptモデルを使用するのですか?

私は「SpotifyApp」を作成するためのガイドとブックを学びました。ArtistとAlbumのtypescriptクラスモデルを作成し、コンポーネントにインポートしてHTTPの結果を設定するというベストプラクティスを紹介しましたそのモデルへの要求。

通常の配列との違いはありませんが、私はそれをなぜ行うのか分かりませんし、トピックに関連する情報を見つけることができません。それは動作しますが、私はそれが何かを見ることができません。私はそれをランダムな属性を与えて下の例のように壊してみましたが、違いはありません。

私はAngular公式ドキュメントに行きました。私はチュートリアルポイントでTypescriptチュートリアルを教えてくれました。それについて何か。だから私の質問はなぜ私はモデルが必要です、私はそれを間違って使用するのですか?そして、私はそれをアプリケーションで何のために使うのですか?

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() { 

    } 

} 

答えて

1

それはちょうどオブジェクトです。そしてあなたはそれが他の属性を持つことができ、それが寛容であるためにまだ機能していることに気付いています。明らかなメリットの1つは、コード補完とエラー検出です。ビジュアルスタジオコードでコードを開き、クリックしてその定義を制御できます。

編集:私が言ったように、コード補完を行います。ですから、名前を入力し続けるためにnを入力し始めると、あなたは知っています。それはあなたが期待するべき属性を探す場所を提供します。 機能を追加できます。 apiから渡されたものだけをより柔軟にしてください。

+0

私はそれが目的であることを認識しましたが、それでも私の質問は何ですか?そして、なぜ私はそれを使用するのですか?最初は、特定の属性を持つ応答のみを渡すことができると思っていましたが、そうではありません。 –

+0

@WIndWindstorm強力な型付けのすべての利点:コンパイル時のエラー検出、コード補完、開発者用の明快さなどを望むモデルb/cを使用します。コードを構造化/モジュール化するb/cを使用します。しかし、TypescriptコードがJavascriptにコンパイルされると、強力なタイピングルールがすべてウィンドウに表示されます。実行時には、クラスに属さない属性の割り当てを禁止するような操作は行われません。モデルにgetter/setterやメソッドを追加すると、これらのことを実行するのに役立ちます。 –

+0

強いタイピングのメリットは何ですか?私は通常の配列との違いは見られないので?私はちょうど私がそれをインポートし、私はそれに欲しい任意の値を割り当てることができますこのオブジェクトを宣言しました。それでは、どのような利点がありますか? –

関連する問題