2017-01-26 80 views
-1

假設關鍵字'abc'和值'真',我應該能夠訪問'this.abc';這應該返回我真Typescript如何將數組值轉換爲類變量

Class A { 
    public someFun(){ 
     this.external.getData().subscribe((externalStream: Array<someType>) => { 
      for(let i:number = 0; i < externalStream.length; i++){ 
       console.info(externalStream[i].key); // This should be class variable 
       console.info(externalStream[i].value); // This should be above variable's value 

      } 
     }) 
    } 
} 

回答

2

試試這個:

Class A { 
    public someFun(){ 

     const obj = this; 

     this.external.getData().subscribe((externalStream: Array<someType>) => { 
      for(let i:number = 0; i < externalStream.length; i++){ 
       obj[externalStream[i].key] = externalStream[i].value; 
      } 
     }) 
    } 
} 
+0

真棒!這就是我一直在尋找!,謝謝你:) –

0

打字稿允許你創建字典類型(有時也稱爲哈希映射)。這是由於在打字稿類型安全的性質這段JavaScript代碼是不可能的:

var value = {}; 
value.abc = true; 
for (var key in value) { 
    console.info(key); 
    console.info(value[key]); 
} 

對於類型安全的方法,你需要了解abc財產在編譯時間的存在,你通常不會。所以,你這樣做有一個字典類型:

let value: { [key: string]: boolean }; 
value['abc'] = true; 
for (var key in value) { 
    console.info(key); 
    console.info(value[key]); 
} 

在你的情況,這將是:

class A { 
    public someFun(){ 
     this.external.getData().subscribe((externalStream: Array<{ [key: string]: boolean }>) => { 
      for(let i:number = 0; i < externalStream.length; i++){ 
       for(let key in externalStream[i]) { 
        console.info(key); 
        console.info(externalStream[i][key]); 
       } 
      } 
     }) 
    } 
}