理解!打字稿中的运算符

我对打字稿很陌生,我正在努力学习这门语言。

我正在阅读一个组件,我看到了这个:

interface FilterRowProps {
  cannotRemove: boolean
  filterName?: string
}

const field = getField(demo.fields)(filterName!)

问题:

  • 这让我想到,!打字稿中的含义是什么?

  • 如果它没有被传递(可选参数?)它会抛出错误还是不做任何事情会发生什么?

  • 将参数设为可选并!在组件内部使用是否有意义?

既然filterNameprops 是可选的,那filterName!意味着什么?

有人可以解释一下吗?超级糊涂。

回答

!是无空断言运营商。它告诉打字稿“我知道这看起来可能是null/ undefined,但相信我,它不是”。在打字稿无法确定您的代码消除了空值或未定义的可能性的情况下,偶尔需要这样做。

但请注意,与任何类型断言一样,您是在告诉打字稿不要检查您的工作。如果你使用它,它实际上可以null/ undefined,打字稿不会提醒你这个事实,你可能会在运行时得到一个错误。

简而言之:你应该很少使用它。大多数时候,如果类型导致打字稿推断它可能是undefined,那么它可能是正确的。然后,您应该编写代码来处理undefined.


以上是理解!打字稿中的运算符的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>