0

我在我的 ng serve 日志中收到以下错误,即使该函数运行良好且没有问题。但是,当我为生产而构建时,这将成为一个问题。如何修复此错误?

uuidv4() {
    return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
      (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
    )
  }

在我的服务中,我将其称为 this.uuidv4() 以生成唯一 ID。

4

1 回答 1

5

好的,我明白它现在在做什么了。此代码[1e7]+-1e3+-4e3+-8e3+-1e11利用了加法运算符的固有类型强制。例如,[]+0退货"0"[1]-1退货"1-1"。它在 JavaScript 中工作得很好,但 TypeScript 会警告你,因为这种代码通常是拼写错误或逻辑错误的结果。

所以这个表达式只是代码高尔夫的一点点"10000000-1000-4000-8000-100000000000"。只需用代码中的结果值替换该表达式,如下所示:

return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, c =>
  (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
)
于 2019-04-25T15:53:26.227 回答