我进行了如下设置,但当我使用 for...of
循环时,却出现了属性 "country" 不存在于类型 "object" 上的错误。这样循环数组中的每个对象并比较对象属性值的方法正确吗?
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);
}
}
}
您可能也将 allProviders
键入为 object[]
。而 country
属性在 object
上并不存在。如果您不在乎类型,可以将 allProviders
和 countryProviders
都声明为 Array<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>;