以下函数生成uuidv4字符串。

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

使用typescript,当我尝试构建时,会出现一个错误,说:
TS2365: Operator '+' cannot be applied to types 'number[]' and '-1000'.

怎样才能用打印文件成功地构建相同的函数呢?

最佳答案

这是一种缩小技术。在那里对整个表达式求值(the([1e7] + -1e3 + -4e3 + -8e3 + -1e11)),得到字符串

10000000-1000-4000-8000-100000000000

因此,只需使用它,而不是依赖强制(typescript不喜欢使用强制):
function uuidv4() {
    return ("10000000-1000-4000-8000-100000000000").replace(/[018]/g, c =>
        (
        c ^
        (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))
        ).toString(16)
    );
}
console.log(uuidv4());

在这一点上,你也可以用0来代替所有的非4(1),如果你愿意的话,它们现在不起任何作用了。

关于javascript - 运算符'+'不能应用于类型'number []':如何纠正构建错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56830902/

10-11 23:28