32 lines
1007 B
TypeScript
32 lines
1007 B
TypeScript
/**
|
||
* 生成一个UUID(通用唯一标识符)。
|
||
*
|
||
* UUID是一种用于软件构建的标识符,其目的是能够生成一个唯一的ID,以便在全局范围内标识信息。
|
||
* 此函数用于生成一个符合version 4的UUID,这种UUID是随机生成的。
|
||
*
|
||
* 生成的UUID的格式为:xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
|
||
* 其中,x是任意16进制数字,y是一个16进制数字,取值范围为[8, b]。
|
||
*
|
||
* @returns {string} 生成的UUID。
|
||
*/
|
||
function generateUUID(): string {
|
||
let d = Date.now();
|
||
if (
|
||
typeof performance !== 'undefined' &&
|
||
typeof performance.now === 'function'
|
||
) {
|
||
d += performance.now(); // use high-precision timer if available
|
||
}
|
||
const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replaceAll(
|
||
/[xy]/g,
|
||
(c) => {
|
||
const r = Math.trunc((d + Math.random() * 16) % 16);
|
||
d = Math.floor(d / 16);
|
||
return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);
|
||
},
|
||
);
|
||
return uuid;
|
||
}
|
||
|
||
export { generateUUID };
|