我在使用strictNullChecks模式编译的typescript中遇到error TS2532: Object is possibly 'undefined'.
错误。
interface Hoge {
num?: number;
}
const hoge: Hoge[] = [{ num: 1 }];
if (!!hoge && hoge.length > 0 && !!hoge[0] && !!hoge[0].num) {
hoge[0].num.toString()
}
playground(请查看strictNullChecks
)
但是,我认为这些情况已完全避免undefined
已hoge
{。}}。
我猜非空断言运算符效果很好:hoge[0].num!
,但我想知道是否还有其他类型的安全方法。
答案 0 :(得分:0)
获取变量中数组的第一项。那么,条件应该有效:
if (hoge.length > 0) {
let item = hoge[0]
if (item.num) {
item.num.toString() // OK in strictNullChecks mode
}
}