.
.
.
newHzl[hanzi].pinyin = newHzl[hanzi].pinyin.filter(eachPinyin => pinyinEnglish[eachPinyin]);
} // for loop
That yields this error:
error: TS2532 [ERROR]: Object is possibly 'undefined'.
newHzl[hanzi].pinyin = newHzl[hanzi].pinyin.filter(
Got a similar error code on following code, and removed the error by checking if a variable has nothing, if nothing then skip(continue)
for (const [hanzi, { pinyinEnglish }] of Object.entries(hzl)) {
if (!pinyinEnglish) {
continue;
}
for (const pinyin of Object.keys(pinyinEnglish)) {
if (pinyinEnglish[pinyin].length === 0) {
delete pinyinEnglish[pinyin];
}
}
.
.
.
I tried to do the same solution on the post's first code, but it still yields a compile error of
Object is possibly 'undefined'
.
.
.
if (!newHzl[hanzi].pinyin) {
continue;
}
newHzl[hanzi].pinyin = newHzl[hanzi].pinyin.filter(eachPinyin => pinyinEnglish[eachPinyin]);
} // for loop
The workaround is to introduce a variable so the compiler will not have a hard time inferring the code's control flow:
.
.
.
const hanziPinyin = newHzl[hanzi].pinyin;
if (!hanziPinyin) {
continue;
}
newHzl[hanzi].pinyin = hanziPinyin.filter(eachPinyin => pinyinEnglish[eachPinyin]);
} // for loop
The problem went away