获取typescript中sometype []类型元素的长度

时间:2017-05-19 15:54:34

标签: angular typescript

我很难获得打字稿数组的长度。这是我做的:

首先,我正在阅读两个本地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是类型安全的我发现有一些像这样的运行时错误很奇怪

0 个答案:

没有答案