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

Angular 获取typescript中sometype[]类型元素的长度,angular,typescript,Angular,Typescript,我很难获得typescript数组的长度。以下是我所做的: 首先,我正在读取两个本地json文件 let imagessObservable = this._http.get(this._imagesUrl) .map((response: Response) => <string[]>response.json()) .do(data => console.log('All: ' + JSON.stringify(data

我很难获得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);
其中,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;
    }
私人组合图像和歌曲
(图像:string[],歌曲:string[]):幻灯片[]{
幻灯片:幻灯片[]=[];

对于(设i=0;好吧,TypeScript只能验证编译时类型是否正确,而不能验证运行时值是否正确。在这种情况下,如果http调用返回
undefined
,或者其他类型没有
length
属性,那么TypeScript就不存在了。@MikeMcCaughan-我正在将返回的json转换为tring[]和转换工作(也就是说,我在调试器中验证了该值,如果转换失败,我不希望代码到达接收两个string[]参数的方法),所以对我来说还是很奇怪。不过,您实际上并没有在运行时JavaScript中强制转换任何内容。您只是告诉TypeScript编译器,您希望该值是字符串数组。没有什么可以阻止它成为其他值。请使用调试器和断点观看“images.length”因为它是函数的输入变量,您无法通过命令在控制台中查看它。
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;
    }