2017-05-15 6 views
0

サブスクライバコール内でzvol_nameにアクセスできない理由を誰かに説明できますか。は、サブスクライバコール内のローカル変数にアクセスできません

this.rest.get(this.volume_resource_name , {}).subscribe((res) => { 
    let zvol_name: Array<String>; 
    let zvol_object: Array<object>; 
    for(let zvol_list of res.data) { 
    zvol_name.push(zvol_list['vol_name']); 
    } 
    for(let j in zvol_name){ 
    var result = this.rest.get(this.volume_resource_name+ '/' + zvol_name['vol_name'], {}) 
    } 
}); 

答えて

2

これは、行let zvol_name: Array<String>;が実際に配列を初期化しないためです。 zvol_nameの変数はまだundefinedになります。

は、それを使用する前に、空の配列でそれを初期化します。

let zvol_name: Array<String> = []; 

あなたはこれらのエラーはコンパイル時に捕まることを確認するためにあなたのtsconfig.jsonファイルに"strictNullChecks": trueを設定することができます。

+0

または 'let zvol_name:Array = new Array ();'ここの違いを参照してください:http://stackoverflow.com/questions/931872/what-s-the-difference-between-array-and-while -declaring-a-javascript-ar – Zze

関連する問題