![]() |
1
8
Optional chaining
考虑以下界面:
这个
可选链接在运行时具有实际效果
短路
到a
如果您不确定属性访问是否安全,并且希望运行时检查保护您,则应使用可选链接。 另一方面,非空断言在运行时没有任何效果。这是一种让你告诉编译器的方式,即使它无法验证属性是否存在,你也可以 断言 这样做是安全的。这也有阻止编译器抱怨的效果,但你现在已经接管了确保类型安全的工作。如果在运行时,你声明的值实际上是未定义的,那么你对编译器撒了谎,你可能会遇到运行时错误:
只有在满足以下条件时,才应使用非空断言 是 确保您的属性访问是安全的,并且您希望跳过运行时检查的便利性。 |
![]() |
2
2
这些是完全不同的东西。
空断言运算符
另一个是可选的链式运算符。它基本上是这种常见Javascript模式的简写:
但这总比简写好,因为如果其中一个值是虚假的,但一些虚假的值支持属性访问,则上述操作将失败。使用null合并,您只需编写:
你完了。就像Javascript版本一样,它是“安全的”,因为它保证在尝试访问空引用的属性时不会导致运行时错误。 在the 特别 如果你在那里,你可能想要这样的东西:
很明显,无论如何,结果都是一个字符串。 |