我很难获得打字稿数组的长度。这是我做的:
首先,我正在阅读两个本地json文件
let imagessObservable = this._http.get(this._imagesUrl)
.map((response: Response) => <string[]>response.json())
.do(data => console.log('All: ' + JSON.stringify(data)))
.catch(this.handleError);
let songsObservable = this._http.get(this._songsUrl)
.map((response: Response) => <string[]>response.json())
.do(data => console.log('All: ' + JSON.stringify(data)))
.catch(this.handleError);
然后我尝试将两个数组合并:
Observable.zip(imagessObservable, songsObservable,
(images, songs) =>
this.CombineImagesAndSongs(images, songs));
CombineImagesAndSongs方法如下:
private CombineImagesAndSongs
(images: string[], songs: string[]): Slide[] {
let slides: Slide[] = [];
for (let i = 0; i <images.length; i++) {
slides[i] = new Slide(images[i], songs[i]);
}
return slides;
}
当我调试代码时,我发现循环只运行一次,而图像数组的实际长度要长得多。
当我在控制台中写images.length
时,我得到“未定义”。
为什么会发生这种情况?如何获得我需要的长度属性?我认为在typescript中类型为T []的对象具有length属性 - 它确实编译,因为typescript是类型安全的我发现有一些像这样的运行时错误很奇怪