Angular 获取typescript中sometype[]类型元素的长度
我很难获得typescript数组的长度。以下是我所做的: 首先,我正在读取两个本地json文件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
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;
}