アクセスしているレスポンスがあります: 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 がこれについて文句を言わずにテストすることはできません。number
null
undefined
undefined
undefined > 0
したがって、おそらく次のようなことを行う必要があります。
const hasSteps = (data?.currentOrganization?.onboardingSteps?.length ?? 0) > 0;
これは使用していますヌル合体0
オプションのチェーンが で終わる場合に生成しますundefined
。