Typescript 类型脚本GUID类?

Typescript 类型脚本GUID类?,typescript,uuid,guid,Typescript,Uuid,Guid,有人知道TypeScript中类似C的GUID(UUID)的良好、可靠的实现吗 我可以自己做,但我想如果别人以前做过,我会腾出时间。我的系统中有一个基于JavaScript GUID生成器的实现 代码如下: 类Guid{ 静态newGuid(){ 返回“xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxx”。替换(/[xy]/g,函数(c){ var r=Math.random()*16 | 0, v=c=='x'?r:(r&0x3 | 0x8); 返回v.toString(

有人知道TypeScript中类似C的GUID(UUID)的良好、可靠的实现吗


我可以自己做,但我想如果别人以前做过,我会腾出时间。

我的系统中有一个基于JavaScript GUID生成器的实现

代码如下:

类Guid{
静态newGuid(){
返回“xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxx”。替换(/[xy]/g,函数(c){
var r=Math.random()*16 | 0,
v=c=='x'?r:(r&0x3 | 0x8);
返回v.toString(16);
});
}
}
//一组guid的示例
对于(变量i=0;i<100;i++){
var id=Guid.newGuid();
console.log(id);
}
我找到了这个

这里是他们的链接,以防以后无法工作

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);
        }
    }
}
模块系统{
导出类Guid{
构造函数(公共guid:字符串){
这是.\u guid=guid;
}
私有_guid:字符串;
public-ToString():字符串{
返回此.guid;
}
//静态成员
静态MakeNew():Guid{
var结果:字符串;
变量i:字符串;
var j:数字;
结果=”;
对于(j=0;j<32;j++){
如果(j==8 | | j==12 | | j==16 | | j==20)
结果=结果+'-';
i=Math.floor(Math.random()*16.toString(16.toUpperCase());
结果=结果+i;
}
返回新的Guid(结果);
}
}
}

@Briguy37在《是我的最爱》中的答案应以重复而不是“离题”结尾“遗憾的是,这个没有为随机UUID设置强制位模式,第三段中的第一个数字必须是4,这是UUID版本号,第四段中的第一个数字必须使用位掩码10xx,这意味着该位置只允许值8、9、A和B。Wiki URL:+1用于粘贴源代码,因为指向该站点的链接不再包含任何typescript文件,并且它们所承载的JS文件与您发布的代码不一样。@PaulGorbas确实如此。我添加了Completeness的链接为什么要生成第三组第一个字符始终为“4”的GUID?@PaulGorbas请参见-这4表示一种GUID版本。4表示它不是MAC地址基,而是伪随机的,可能在加密方面不安全。“C#guid”与您的函数生成的guid相同或相同。碰撞极不可能发生,因此您完全可以信赖它们的唯一性。当然,您可以将其用作主键,而检查注册表则没有帮助。不过,这种实现在加密方面并不安全。因此,价值可能是可预测的。但这不是唯一性的问题。请向潜在的编辑注意这个答案:如果您使用的是tslint,并且它抱怨按位运算符,请检查这一点。