"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > टाइपआईडी-जेएस: जावास्क्रिप्ट के लिए टाइप सेफ, के-सॉर्टेबल यूनिक आईडी

टाइपआईडी-जेएस: जावास्क्रिप्ट के लिए टाइप सेफ, के-सॉर्टेबल यूनिक आईडी

2024-08-05 को प्रकाशित
ब्राउज़ करें:490

TypeID-JS: Type Safe, K-Sortable Unique IDs for Javascript

जब से हमने पिछले साल पहली बार टाइपआईडी की घोषणा की है, हमने समुदाय से महत्वपूर्ण स्वीकृति और रुचि देखी है, समुदाय द्वारा 23 अलग-अलग भाषा के ग्राहकों का योगदान है और हमारे टाइपस्क्रिप्ट कार्यान्वयन के 90,000 साप्ताहिक एनपीएम डाउनलोड हैं। .

पिछले हफ्ते, हमने अपने टाइपस्क्रिप्ट कार्यान्वयन, टाइपआईडी-जेएस का संस्करण 1.0 जारी किया। इस रिलीज़ का जश्न मनाने के लिए, हम इस बारे में और अधिक जानकारी साझा करना चाहते थे कि हमने टाइपआईडी क्यों लिखा, और जेटीफाई पर टाइप सुरक्षा सुनिश्चित करने के लिए हम इसका उपयोग कैसे करते हैं।

प्रकार सुरक्षा और विशिष्ट पहचानकर्ता

हमने आपकी टीम में डेवबॉक्स या डॉकर आधारित परियोजनाओं को तैनात करने और प्रबंधित करने के लिए जेटीफाई क्लाउड का निर्माण करते समय टाइपआईडी का विचार विकसित किया। Jetify Cloud के आर्किटेक्चर में कई अलग-अलग इकाइयाँ हैं जिन्हें हमें प्रबंधित करने की आवश्यकता है: संगठन, उपयोगकर्ता, परिनियोजन, रहस्य और प्रोजेक्ट, जिनमें से सभी को अलग करने के लिए अद्वितीय पहचानकर्ताओं की आवश्यकता होती है।

मूल रूप से, हमने सर्वोत्तम प्रथाओं का पालन करके और एक इकाई के प्रत्येक उदाहरण के लिए एक यूयूआईडी निर्दिष्ट करके शुरुआत की थी। फिर भी, हमें तुरंत एक समस्या का सामना करना पड़ा: UUIDv7 में प्रकार की सुरक्षा का अभाव है! उदाहरण के तौर पर नीचे दिए गए कोड को लें:

export const getMember = async (
  memberId: UUID,
  orgId: UUID,
) => {
  const { member, organization } =
    await authClient.organizations.members.get({
      organization_id: orgId,
      member_id: memberId,
    });

  return { member, organization };
};

यह फ़ंक्शन किसी सदस्य और संगठन को देखने के लिए दो यूयूआईडी का उपयोग करता है। हालाँकि, फ़ंक्शन यह सुनिश्चित नहीं कर सकता कि सदस्यआईडी और ऑर्गआईडी सही इकाई का प्रतिनिधित्व करते हैं! यदि कोई डेवलपर गलती से उस सदस्यआईडी का उपयोग करता है जहां हम एक ऑर्गआईडी की उम्मीद कर रहे थे, तो हम केवल रनटाइम पर समस्या का पता लगाएंगे।

जैसा कि हम इस समस्या का समाधान ढूंढ रहे थे, हमें स्ट्राइप की ऑब्जेक्ट आईडी का सामना करना पड़ा, जो एक उपसर्ग का उपयोग करके प्रकार की जानकारी को आईडी में एन्कोड करता है। यह एक बेहतरीन समाधान प्रतीत होता है, लेकिन दुर्भाग्य से, हमें कई भाषाओं में टाइप की गई आईडी को लगातार लागू करने के लिए एक अच्छी तरह से परिभाषित मानक नहीं मिल सका।

टाइपआईडी: के-सॉर्टेबल, टाइप-सुरक्षित, विश्व स्तर पर अद्वितीय पहचानकर्ता

TypeID एक ऐसा सुसंगत मानक बनाने का हमारा प्रयास है। टाइपआईडी एक प्रकार-सुरक्षित, के-सॉर्टेबल, विश्व स्तर पर अद्वितीय पहचानकर्ता है जो स्ट्राइप के उपसर्ग प्रकारों से प्रेरित है। टाइपआईडी अन्य भाषाओं को अपने ग्राहकों और पुस्तकालयों को लागू करने के लिए एक सुसंगत मानक भी प्रदान करता है।

TypeIDs अद्वितीय पहचानकर्ताओं को तीन भागों के साथ लोअरकेस स्ट्रिंग के रूप में एन्कोड करते हैं:

  1. एक उपसर्ग जो आईडी के प्रकार का प्रतिनिधित्व करता है (63 वर्ण, लोअरकेस ASCII अक्षर)
  2. एक अंडरस्कोर (_) विभाजक
  3. एक 128-बिट UUIDv7 को संशोधित बेस32 एन्कोडिंग का उपयोग करके 26-वर्ण स्ट्रिंग के रूप में एन्कोड किया गया।
  user_2x4y6z8a0b1c2d3e4f5g6h7j8k
  └──┘ └────────────────────────┘
  type    uuid suffix (base32)

इस प्रारूप के साथ, एक टाइपआईडी-संगत क्लाइंट आपकी आईडी में प्रकार की जानकारी को एन्कोड और डीकोड कर सकता है और फिर बिल्ड या कंपाइल समय पर चेक चला सकता है ताकि यह सुनिश्चित हो सके कि आप सही आईडी का उपयोग कर रहे हैं। उदाहरण के लिए, यदि हम किसी उपयोगकर्ता इकाई के लिए एक यादृच्छिक टाइपआईडी बनाना चाहते हैं, तो हम ऐसा कुछ कर सकते हैं:

टाइपआईडी के साथ, हम अपने कार्यों में टाइप चेक भी जोड़ सकते हैं और रनटाइम पर त्रुटियां पकड़ सकते हैं। उपरोक्त उदाहरण को दोबारा लिखते हुए, अब हम यह सुनिश्चित कर सकते हैं कि डेवलपर्स उचित आईडी का सही जगह पर उपयोग करेंगे:

import { TypeID } from 'typeid-js';

export const getMember = async (
  memberId: TypeID,
  orgId: TypeID,
) => {
    ...
}

प्रकार की सुरक्षा के अलावा, इस प्रारूप में कुछ गुण हैं जो इसे डेवलपर्स के उपयोग के लिए अनुकूल बनाते हैं:

  1. UUIDv7 संगत: आप उपसर्ग को हटाकर और प्रत्यय को डिकोड करके आसानी से टाइपआईडी को यूयूआईडी में बदल सकते हैं।
  2. के-सॉर्टेबल: आप अच्छे इलाके के साथ अपने डेटाबेस में टाइपआईडी को सॉर्ट करने योग्य प्राथमिक कुंजी के रूप में उपयोग कर सकते हैं।
  3. यूआरएल सुरक्षित: हम अपने यूआरएल में टाइपआईडी का उपयोग करते हैं ताकि उन्हें कॉपी, पेस्ट और साझा करना आसान हो सके। यूआरएल में टाइपआईडी शामिल करने से पेज स्थिति उत्पन्न करना सरल हो जाता है।
  4. आसानी से चयन योग्य: आप इसे डबल-क्लिक करके कॉपी और पेस्ट कर सकते हैं (इसे आज़माएं!)

टाइपआईडी-जेएस v1.0 में नई सुविधाएँ

आज, हम अपनी टाइपआईडी-जेएस लाइब्रेरी के संस्करण 1.0 की घोषणा कर रहे हैं। यह अद्यतन प्रयोज्यता और प्रकार सुरक्षा में सुधार के लिए कई नई सुविधाएँ जोड़ता है, जिनमें शामिल हैं:

  1. अनबॉक्स्ड, फ़ंक्शन-आधारित, स्ट्रीम करने योग्य टाइपआईडी: इससे टाइपआईडी को स्ट्रिंग में डाले बिना क्रमबद्ध करना संभव हो जाता है और आपको टाइपआईडी को मैप्स और सेट्स में कुंजी के रूप में उपयोग करने की सुविधा मिलती है।
  2. कठोर प्रकार और रनटाइम जांच: यदि आप एक खाली स्ट्रिंग या गलत उपसर्ग के साथ एक टाइपआईडी को पार्स करने का प्रयास करते हैं तो टाइपआईडी अब एक त्रुटि उत्पन्न करता है।
  3. टाइपआईडी स्पेक v3 के साथ संगतता: जेएस टाइपआईडी अब उपसर्ग में अंडरस्कोर का उपयोग कर सकते हैं। उदाहरण के लिए: pro_subscription_2x4y6z8a0b1c2d3e4f5g6h7j8k उपसर्ग pro_subscription के साथ एक वैध टाइपआईडी है।

अपने प्रोजेक्ट के साथ टाइपआईडी का उपयोग कैसे करें

आप अपनी पसंद के NodeJS पैकेज मैनेजर का उपयोग करके अपने JS प्रोजेक्ट में टाइपआईडी जोड़ सकते हैं। जेएस का उपयोग नहीं कर रहे? टाइपआईडी में 26 अलग-अलग कार्यान्वयन हैं, जिनमें गो से लेकर ओकैमल और एसक्यूएल तक शामिल हैं। यदि आप टाइपआईडी का अपना स्वयं का कार्यान्वयन लिखने में रुचि रखते हैं, तो आप हमारे औपचारिक विनिर्देश की जांच कर सकते हैं।

क्या आप अपनी विकास टीम को सशक्त बनाना चाहते हैं?

Jetify पर हमारी टीम शक्तिशाली डेवलपर टूल बनाती है। Jetify Cloud के साथ अपनी तैनाती और परियोजनाओं को सरल बनाएं, या Devbox के साथ ऑनबोर्डिंग डेव वातावरण को स्वचालित करें। आप हमें ट्विटर पर फ़ॉलो कर सकते हैं, या हमारे डेवलपर्स के साथ हमारे डिस्कॉर्ड सर्वर पर लाइव चैट कर सकते हैं। हम अपने जीथब रेपो पर मुद्दों और पुल अनुरोधों का भी स्वागत करते हैं।

विज्ञप्ति वक्तव्य इस लेख को पुन: प्रस्तुत किया गया है: https://dev.to/jetify/typeid-pype-safe-s-s-sortable- unique-ids-for-javascript-djh?1 यदि कोई उल्लंघन है, .com इसे हटाने के लिए।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3