类型 'object&#39 上不存在属性;

我进行了如下设置,但当我使用 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 上并不存在。如果您不在乎类型,可以将 allProviderscountryProviders 都声明为 Array

let countryProviders: Array;
let allProviders: Array;

如果您确实需要静态类型检查。您可以为结构创建一个接口并使用它:

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

let countryProviders: Array;
let allProviders: Array;
评论(5)