2017-04-11 95 views
4

我有以下設置,當我循環使用for...of並得到屬性「國家」的錯誤在類型「對象」上不存在。這是循環訪問數組中的每個對象並比較對象屬性值的正確方法嗎?屬性不存在類型'對象'

let countryProviders: object[]; 

export function GetAllProviders() { 
    allProviders = [ 
     { region: "r 1", country: "US", locale: "en-us", company: "co 1" }, 
     { region: "r 2", country: "China", locale: "zh-cn", company: "co 2" }, 
     { region: "r 4", country: "Korea", locale: "ko-kr", company: "co 4" }, 
     { region: "r 5", country: "Japan", locale: "ja-jp", company: "co 5" } 
    ] 

    for (let providers of allProviders) { 
     if (providers.country === "US") { // error here 
     countryProviders.push(providers); 
     } 
    } 
} 

回答

9

你可能有allProviders類型爲object[]爲好。 object上不存在房產country。如果你不關心打字,你可以同時聲明allProviderscountryProvidersArray<any>

let countryProviders: Array<any>; 
let allProviders: Array<any>; 

如果你想靜態類型檢查。您可以爲結構創建接口並使用它:

interface Provider { 
    region: string, 
    country: string, 
    locale: string, 
    company: string 
} 

let countryProviders: Array<Provider>; 
let allProviders: Array<Provider>; 
+0

喜歡它!我正在尋找靜態類型檢查解決方案。謝謝@Saravana :) –

+0

爲什麼你沒有使用類而不是接口? –

+1

@RafaelReyes如果你需要的只是編譯時檢查你的對象類型,你可以使用接口(接口在構建過程中被擦除,不影響生成的JS)。但是,類會轉換爲JS。基於這個問題,不需要創建一個類。 – Saravana