1. ホーム
  2. javascript

[解決済み] タイプスクリプト: プロパティが'object'型に存在しない

2022-02-01 07:10:49

質問

以下のような設定をしているのですが、ループスルーする際に 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<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>;