A TypeScript GUID Class?


Answer :

There is an implementation in my TypeScript utilities based on JavaScript GUID generators.

Here is the code:

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); }

Please note the following:

C# GUIDs are guaranteed to be unique. This solution is very likely to be unique. There is a huge gap between "very likely" and "guaranteed" and you don't want to fall through this gap.

JavaScript-generated GUIDs are great to use as a temporary key that you use while waiting for a server to respond, but I wouldn't necessarily trust them as the primary key in a database. If you are going to rely on a JavaScript-generated GUID, I would be tempted to check a register each time a GUID is created to ensure you haven't got a duplicate (an issue that has come up in the Chrome browser in some cases).


I found this https://typescriptbcl.codeplex.com/SourceControl/latest

here is the Guid version they have in case the link does not work later.

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);         }     } } 

Comments

Popular posts from this blog

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Can Feynman Diagrams Be Used To Represent Any Perturbation Theory?