從 api 獲取一些資料時出現上述錯誤。如果資料為空,則此錯誤,如果 api 回傳一些資料,則此錯誤不會出現。
我正在使用下面的代碼并訂閱服務。
this.systemMessageService.getSystemMessage().
subscribe(res => {
if (res.message !== null && res.message !== undefined) {
this.systemMessage = res.message;
} else {
this.systemMessage = undefined;
}
});
請幫助我如何處理此錯誤
uj5u.com熱心網友回復:
您還應該將 res 添加到您的 if 陳述句中,例如 if (res && res.mesage) 或更短的方式 if (res?.message){...} else {...}
uj5u.com熱心網友回復:
你立即試圖訪問該屬性message的的res任何檢查變數res定義。我建議將條件更改為以下之一
選項 1:雙鍵運算子!! 三元運算子?:
this.systemMessage = (!!res && !!res.message) ? res.message : undefined;
message只有res定義了該屬性才會被訪問。
關于此處的雙鍵運算子:“轉換Object為boolean。如果它是錯誤的(例如,,,0等null)undefined,它將是false,否則,true”。
我們還可以使用三元運算子?:將 if-else 簡化為單個陳述句。
選項 2:可選鏈接運算子 ?.
this.systemMessage = res?.message;
本質上與選項 #1 相同,但使用了可選的鏈接運算子?.。同樣,只有在定義message時才會訪問該屬性。res
重要的是,從檔案中, “如果參考是(或),則運算式不會導致錯誤,而是回傳值為"的運算式短路nullishnullundefinedundefined。因此,您可以跳過顯式分配undefined.
選項 3:空值合并運算子 ??
this.systemMessage = res.message ?? undefined;
空值合并運算子??回傳 LHS ( res.message) 的值(如果已定義)或 RHS 的值(undefined在您的情況下)如果 LHS 為空值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/420581.html
標籤:
