Does anyone know of a good, solid, implementation of C# like GUID (UUID) in TypeScript?
Could do it myself but figured I'd spare my time if someone else done it before.
Does anyone know of a good, solid, implementation of C# like GUID (UUID) in TypeScript?
Could do it myself but figured I'd spare my time if someone else done it before.
This is now something you can do natively in JavaScript/TypeScript with crypto.randomUUID()
.
Here's an example generating 20 UUIDs.
for (let i = 0; i < 20; i++) {
let id = crypto.randomUUID();
console.log(id);
}
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 < 20; 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).
Empty
and TryParse
. –
Bowhead 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);
}
}
}
© 2022 - 2024 — McMap. All rights reserved.