オブジェクトはおそらく「未定義」です。オプションチェーンの Typescript エラー 質問する

オブジェクトはおそらく「未定義」です。オプションチェーンの Typescript エラー 質問する

アクセスしているレスポンスがあります: data?.currentOrganization?.onboardingSteps?。ご想像のとおり、data、currentOrganization、onboardingSteps はすべて null になる可能性があります。次のように変数を割り当てます。

const hasSteps = data?.currentOrganization?.onboardingSteps?.length > 0;

いずれかのフィールドが null の場合、またはステップが 1 未満の場合、hasValue は false と評価されると思いました。ただし、TypeScript エラーが発生します: Object is possibly 'undefined'

現在、私は次のように回避しています:

const hasSteps =
  data?.currentOrganization?.onboardingSteps != null &&
  data?.currentOrganization?.onboardingSteps?.length > 0;

これは不必要に冗長な気がします。代わりの、より洗練された解決策はありますか?

ベストアンサー1

オプションチェーンチェーン内のすべてがまたはでない場合data?.currentOrganization?.onboardingSteps?.length、おそらくである値が生成されますが、チェーン内の 1 つでも null の場合、出力はそれ自体になります。Typescript がこれについて文句を言わずにテストすることはできません。numbernullundefinedundefinedundefined > 0

したがって、おそらく次のようなことを行う必要があります。

const hasSteps = (data?.currentOrganization?.onboardingSteps?.length ?? 0) > 0;

これは使用していますヌル合体0オプションのチェーンが で終わる場合に生成しますundefined

コードへのプレイグラウンドリンク

おすすめ記事