我嘗試使用 if 來確定屬性是否存在,但出現錯誤


我試過了,這是為什么呢?
uj5u.com熱心網友回復:
Typescript 不知道forEach回呼函式是同步執行的。所以它不能保證當傳遞給的函式forEach被執行時,檢查仍然適用。
解決這個問題的最簡單方法是使用 for/of 回圈來保證同步執行。
if (a.childList) {
for (const b of a.childList) {
for (const c of a.childList) {
console.log(b, c) // works
}
}
}
uj5u.com熱心網友回復:
這是因為函式何時被呼叫的不可靠。
考慮到這一點,#forEach接受一個函式。結果,編譯器沒有適當的方法來確定在呼叫函式之前該值是否已更改。
例如:
if (a.childList) {
a.childList.forEach(() => {
a.childList.forEach(() => {});
a.childList = null
});
}
在上述情況下,僅在第一次迭代中,我已經更改了值,所以現在在運行時它可能會因此而崩潰。由于 typescript 不知道您的函式執行流程,因此它要求您在函式呼叫中再次檢查可空性以避免任何運行時錯誤。
您可以按如下方式更改代碼以修復它:
const {childList} = a
if (childList) {
childList.forEach(() => {
childList.forEach(() => {});
});
}
uj5u.com熱心網友回復:
您可以使用可選鏈接來完全避免錯誤:
a.childList?.forEach(() => {
a.childList?.forEach(() => {});
});
if這將達到與您的檢查相同的效果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/454272.html
標籤:打字稿
上一篇:Angular-創建組件樹選單
