关于uuid:TypeScript GUID类?

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