我可以避免Array的“对象可能'未定义'”的Typescript Error

时间:2017-09-22 09:10:09

标签: typescript

我在使用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

但是,我认为这些情况已完全避免undefinedhoge {。}}。

我猜非空断言运算符效果很好:hoge[0].num!,但我想知道是否还有其他类型的安全方法。

1 个答案:

答案 0 :(得分:0)

获取变量中数组的第一项。那么,条件应该有效:

if (hoge.length > 0) {
  let item = hoge[0]
  if (item.num) {
    item.num.toString() // OK in strictNullChecks mode
  }
}