以下函数生成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/