错误TS2365:运算符“ +”不能应用于类型“ number []”和“ -1000”

时间:2019-04-25 15:38:42

标签: angular typescript

即使功能运行正常,没有问题,我在ng服务日志中仍收到以下错误。但是,当我为生产而构建时,这将成为一个问题。如何解决此错误?

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。

1 个答案:

答案 0 :(得分:5)

好的,我知道它现在在做什么。该代码[1e7]+-1e3+-4e3+-8e3+-1e11利用了addition operator's固有类型强制。例如,[]+0返回"0",而[1]-1返回"1-1"。它可以在JavaScript中正常工作,但是TypeScript会警告您,因为这类代码通常是拼写错误或逻辑错误的结果。

对于"10000000-1000-4000-8000-100000000000"来说,该表达式只是code golf的一小部分。只需用代码中的结果值替换该表达式,如下所示:

return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, c =>
  (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
)