myvariable.subperty之间的区别是什么?value和myvariable.subperty!价值



myvariable.subproperty?.valuemyvariable.subproperty!.value之间有什么区别如果子属性为null,则似乎两者都执行,从而传递null值。我知道断言运算符通常意味着什么,只是不确定当你像这样链式调用属性时它意味着什么。谢谢

object?.value是JavaScript语法,并且将:

  • 如果object为null或未定义,则计算为undefined
  • 否则,将访问对象的value属性

object!.value是TypeScript语法,并且将:

  • 向TypeScript编译器断言object既不是null也不是未定义的
  • 无条件地尝试访问对象的value属性

如果对象可能为null或未定义,?.是正确的方法,因为如果使用!,可能会导致运行时错误。(只有当您绝对确定左侧的表达式将始终存在时,才使用!,并且您需要向TypeScript编译器指示这一点(

最新更新