2014-10-22 6 views
29

क्या किसी को टाइपस्क्रिप्ट में ग्रिड की तरह सी # के अच्छे, ठोस, कार्यान्वयन के बारे में पता है?एक टाइपस्क्रिप्ट ग्रिड क्लास?

इसे अपने आप को करना है लेकिन लगा कि मैं अपने खाली समय अगर किसी यह पहले किया था की जा सकी।

धन्यवाद!

+2

@ [स्टैक ओवरफ़्लो?: कैसे जावास्क्रिप्ट में एक GUID/UUID बनाने के लिए] में Briguy37 के जवाब (http://stackoverflow.com/a/8809472/2626313) के साथ मेरी पसंदीदा – xmojmr

उत्तर

70

जावास्क्रिप्ट GUID जनरेटर के आधार पर मेरे TypeScript utilities में एक कार्यान्वयन है।

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

कृपया ध्यान दें निम्नलिखित:

सी # GUIDs अद्वितीय होने की गारंटी दी जाती है

यहाँ कोड है। यह समाधान अद्वितीय होने के लिए बहुत संभावना है। "बहुत संभावना" और "गारंटीकृत" के बीच एक बड़ा अंतर है और आप इस अंतर के माध्यम से गिरना नहीं चाहते हैं।

जावास्क्रिप्ट उत्पन्न GUIDs एक अस्थायी कुंजी है कि आप एक सर्वर की प्रतिक्रिया के लिए प्रतीक्षा कर रहा है, जबकि का उपयोग के रूप में उपयोग करने के लिए महान हैं, लेकिन मैं जरूरी एक डेटाबेस में प्राथमिक कुंजी के रूप उन पर भरोसा नहीं होता। यदि आप जावास्क्रिप्ट द्वारा जेनरेट किए गए GUID पर भरोसा करने जा रहे हैं, तो मुझे यह सुनिश्चित करने के लिए हर बार एक GUID बनाया गया है कि आपको एक डुप्लिकेट नहीं मिला है (कुछ समस्याएं जो क्रोम ब्राउज़र में कुछ मामलों में आई हैं)।

+4

तुम क्यों पैदा कर रहे हैं GUIDs है तीसरे समूह का पहला चरित्र हमेशा '4'? –

+8

@PaulGorbas https://en.wikipedia.org/wiki/Globally_unique_identifier देखें - यह 4 एक प्रकार का GUID संस्करण इंगित करता है। 4 इंगित करता है कि यह मैक-एड्रेस बेस नहीं है लेकिन छद्म-यादृच्छिक है और क्रिप्टोग्राफ़िक रूप से सुरक्षित नहीं हो सकता है। – ZoolWay

+3

"सी # GUIDs" आपके फ़ंक्शन द्वारा उत्पादित किए गए लोगों की तुलना में अधिक या कम अद्वितीय नहीं हैं। एक टक्कर इतनी असंभव है कि आप पूरी तरह से अपनी विशिष्टता पर भरोसा कर सकते हैं। आप इसे प्राथमिक कुंजी के रूप में उपयोग कर सकते हैं और रजिस्ट्री की जांच करना सहायक नहीं है। हालांकि, यह कार्यान्वयन क्रिप्टोग्राफ़िक रूप से सुरक्षित नहीं है। तो मूल्य अनुमानित हो सकता है। लेकिन यह विशिष्टता की समस्या नहीं है। इस उत्तर के संभावित संपादकों के लिए – R2C2

9

मैंने पाया इस https://typescriptbcl.codeplex.com/SourceControl/latest

यहाँ

the Guid version वे मामले में लिंक बाद में काम नहीं करता है।

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

दुर्भाग्य से यह एक यादृच्छिक UUID के लिए अनिवार्य सा patters निर्धारित नहीं करता है, तीसरे खंड में पहला अंक 4 होना चाहिए, कि UUID संस्करण संख्या है, और चौथे खंड में पहला अंक bitmask 10xx, जिसका अर्थ है केवल का उपयोग करना चाहिए उस स्थिति में मूल्य 8, 9, ए और बी की अनुमति है। विकी यूआरएल: https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_.28random.29 –

+0

+1 स्रोत कोड में पेस्ट करने के लिए +1, क्योंकि उस साइट के लिंक में अब कोई टाइपस्क्रिप्ट फ़ाइलें और जेएस फ़ाइलें नहीं हैं वे मेजबान आपके द्वारा पोस्ट किए गए कोड की तरह नहीं दिखते हैं। –

+0

@PaulGorbas यह करता है। मैंने पूर्णता के लिए लिंक जोड़ा –

संबंधित मुद्दे