这是我的第一篇文章,我想问你的主题的帮助,我似乎无法找到任何信息。为什么以及如何使用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() {
}
}
我意识到它是对象,但我的问题仍然是它的作用?为什么我使用它?起初我认为只有某些属性可以传递给它,但事实并非如此。 –
@WIndWindstorm使用的型号B/C你想强类型的所有优点:在编译时发现错误,代码完成,清晰度为开发商,等你用它二/三要构建/模块化代码。但是,当Typescript代码编译为Javascript时,所有强类型规则都会出现在窗口中......所以在运行时,模型不会执行阻止您分配不属于该类的属性的事情。您可以在模型中添加getters/setters或方法来帮助执行这些操作... –
强类型的好处是什么意思?因为我没有看到与正常数组有什么不同?我只是宣布这个对象我导入它,我可以分配任何我想要的值。那么有什么好处? –