【问题标题】:Typescript object is possibly undefined [duplicate]打字稿对象可能未定义[重复]
【发布时间】:2019-12-24 03:32:11
【问题描述】:
interface c {
    state?: {b: string}
}

const x: c = { state: {b: 'c'}}
console.log(x.state.b)

在上面的代码中,在接口c中,state是一个可选属性。

但是,当我想在设置状态对象时访问它的属性 b 时,它给了我这个错误,对象可能是“未定义”。解决此问题的正确方法是什么?

【问题讨论】:

    标签: typescript


    【解决方案1】:

    如果你确定一个可选的(标有?的字段)有一个值,这可以通过检查它的值来实现:

    if(x.state !== undefined){
      console.log(x.state.b)
    }
    

    您可以使用! 将其标记为存在:

    console.log(x.state!.b)
    

    【讨论】:

      【解决方案2】:

      那是因为state 可以是未定义的,编译器并不总是知道它何时被明确定义。

      您可以告诉它您确定它已定义,只需使用:x.state!.b

      【讨论】:

        猜你喜欢
        • 2019-07-30
        • 2019-09-15
        • 1970-01-01
        • 1970-01-01
        • 2021-01-19
        • 2021-08-08
        • 2021-08-24
        • 2021-08-06
        • 2022-10-13
        相关资源
        最近更新 更多