打字稿:“对象”类型上不存在属性

新手上路,请多包涵

我有以下设置,当我循环使用 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);
      }
   }
}

原文由 Jason 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 663
1 个回答

您可能也将 allProviders 类型为 object[] 。并且属性 countryobject 上不存在。如果您不关心打字,您可以将 allProviderscountryProviders 声明为 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>;

原文由 Saravana 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题