¿Una clase de GUID de TypeScript?

¿Alguien sabe de una buena y sólida implementación de C # como GUID (UUID) en TypeScript?

Podría hacerlo yo mismo, pero pensé que ahorraría mi tiempo si alguien más lo hubiera hecho antes.

Hay una implementación en mis utilidades de TypeScript basada en generadores GUID de JavaScript.

Aquí está el código:

class Guid { static newGuid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8); return v.toString(16); }); } } // Example of a bunch of GUIDs for (var i = 0; i < 100; i++) { var id = Guid.newGuid(); console.log(id); } 

Tenga en cuenta lo siguiente:

Los GUID de C # tienen la garantía de ser únicos. Esta solución es muy probable que sea única. Existe una gran brecha entre "muy probable" y "garantizado" y no quiere perder esta brecha.

Los GUID generados por JavaScript son geniales para usar como clave temporal que usa mientras espera que un servidor responda, pero no necesariamente los confío como la clave principal en una base de datos. Si va a confiar en un GUID generado por JavaScript, me sentiría tentado a consultar un registro cada vez que se crea un GUID para asegurarse de que no tiene un duplicado (un problema que ha surgido en el navegador Chrome en algunos casos). )

Encontré esto https://typescriptbcl.codeplex.com/SourceControl/latest

aquí está la versión Guid que tienen en caso de que el enlace no funcione más tarde.

 module System { export class Guid { constructor (public guid: string) { this._guid = guid; } private _guid: string; public ToString(): string { return this.guid; } // Static member static MakeNew(): Guid { var result: string; var i: string; var j: number; result = ""; for (j = 0; j < 32; j++) { if (j == 8 || j == 12 || j == 16 || j == 20) result = result + '-'; i = Math.floor(Math.random() * 16).toString(16).toUpperCase(); result = result + i; } return new Guid(result); } } }