2017-04-06 58 views
2

這是我的第一篇文章,我想問你的主題的幫助,我似乎無法找到任何信息。爲什麼以及如何使用Angular2/Typescript模型?

我一直在學習Angular 2通過指南和ng-book創建「SpotifyApp」,並且我遇到了創建Artist和Album的typecript類模型的最佳實踐,將它導入到我的組件並設置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

這只是一個對象。你已經注意到它可以有其他的屬性,並且仍然可以工作,因爲它是寬容的。一個明顯的好處是代碼完成和錯誤檢測。在Visual Studio代碼中打開你的代碼,你可以控制點擊它的定義。

編輯:就像我說的它給你的代碼完成。所以你的ide知道你什麼時候開始輸入n來繼續並填寫名字。它給你一個尋找你應該期望的屬性的地方。 你可以添加功能做到這一點。給它更多的靈活性,只是從API傳遞的。

+0

我意識到它是對象,但我的問題仍然是它的作用?爲什麼我使用它?起初我認爲只有某些屬性可以傳遞給它,但事實並非如此。 –

+0

@WIndWindstorm使用的型號B/C你想強類型的所有優點:在編譯時發現錯誤,代碼完成,清晰度爲開發商,等你用它二/三要構建/模塊化代碼。但是,當Typescript代碼編譯爲Javascript時,所有強類型規則都會出現在窗口中......所以在運行時,模型不會執行阻止您分配不屬於該類的屬性的事情。您可以在模型中添加getters/setters或方法來幫助執行這些操作... –

+0

強類型的好處是什麼意思?因爲我沒有看到與正常數組有什麼不同?我只是宣佈這個對象我導入它,我可以分配任何我想要的值。那麼有什麼好處? –

相關問題