看vue3.0源码,发现!++,!--,请问是什么作用

如题,看到源码中有

function addId(id: string) {
    const { identifiers } = context
    if (identifiers[id] === undefined) {
      identifiers[id] = 0
    }
    identifiers[id]!++
  }

  function removeId(id: string) {
    context.identifiers[id]!--
  }

分开来好理解,
!强制解析,递增递减。
但不知道是否是合起来理解。

阅读 3.1k
2 个回答

! 是断言,因为根据 ts 类型推导 identifiers[id] 可能为空,而 ! 是一个 NonNullAssert,写上这个表示 identifiers[id] 肯定不为空,可以安全的做自增运算。

这个就是typescript的写法,加上!强制解析,表示我这肯定有值,然后再++,如果转成了JS的话,identifiers[id]!++就是identifiers[id]++

推荐问题