![](/img/trans.png)
[英]Why is TypeScript showing “Cannot invoke an object which is possibly 'undefined'.ts(2722)” error after optional chaining operator?
[英]Object is possibly 'undefined' Error on Optional Chaining 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;
這感覺不必要地冗長。 有沒有其他更優雅的解決方案?
可選鏈最終將產生一個data?.currentOrganization?.onboardingSteps?.length
的number
,如果鏈中的所有內容都不是null
或undefined
.... 但如果鏈中的任何內容為空,則該值可能是一個數字output 本身將是undefined
的。 如果沒有 Typescript 抱怨,您將無法測試undefined > 0
。
因此,您可能應該執行以下操作:
const hasSteps = (data?.currentOrganization?.onboardingSteps?.length ?? 0) > 0;
如果可選鏈以undefined
結尾,則使用無效合並來產生0
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.