A TypeScript GUID class?
有人知道typescript中C类guid(uuid)的良好、可靠的实现吗?
我可以自己做,但我想如果别人以前做过我会腾出时间。
我的typescript实用程序中有一个基于javascript guid生成器的实现。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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); } |
请注意以下事项:
C吉他保证是独一无二的。这个解决方案很可能是独一无二的。"非常有可能"和"有保证"之间有很大的差距,你不想通过这个差距。
Javascript生成的guid非常适合用作在等待服务器响应时使用的临时密钥,但我不一定相信它们是数据库中的主键。如果您要依赖于javascript生成的guid,那么每次创建guid时,我都会尝试检查一个寄存器,以确保没有重复(在某些情况下,chrome浏览器中会出现一个问题)。
我找到这个https://typescriptbcl.codeplex.com/sourcecontrol/latest
这里是他们的guid版本,以防以后链接无法工作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 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); } } } |
号