TypeScript Academy · पाठ

इकाइयों के मिश्रण को रोकने वाले ब्रांडेड/अपारदर्शी प्रकार

आधार प्रकारों को फैंटम ब्रांड प्रॉपर्टी के साथ इंटरसेक्ट करके इकाइयों या टैग के मिश्रण को रोकें; निर्माण केवल फ़ैक्टरी फ़ंक्शन से करें।

पाठ 1, कुल 3 में से8 चरण

इकाइयों के मिश्रण को रोकने वाले ब्रांडेड/अपारदर्शी प्रकार, CoddyKit पर TypeScript Academy का एक निःशुल्क पाठ है। यह 3 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह TypeScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। TypeScript Academy पाठ्यक्रम में कुल 3 पाठ शामिल हैं।

परिचय

लक्ष्य: एक जैसे दिखने वाले मानों को प्रकार स्तर पर अलग करें। एक साधारण number मीटर और सेकंड में अंतर नहीं बता सकता; ब्रांड चिह्न यह अंतर बता सकता है।

  • रनटाइम अतिरिक्त बोझ शून्य
  • अधिक सुरक्षित एपीआई और पुनर्गठन
  • केवल फ़ैक्टरी फ़ंक्शनों से बनाएँ

मूल इकाइयों को ब्रांड करना

ब्रांड चिह्न संकलन के समय इकाइयों को अलग रखते हैं; गलत आर्ग्यूमेंट क्रम प्रकार-जाँच में विफल हो जाता है।

type Meter = number & { readonly __brand: "meter" }
type Second = number & { readonly __brand: "second" }

function meter(n: number): Meter { return n as Meter }
function second(n: number): Second { return n as Second }

const d = meter(100)
const t = second(9)

function speed(dist: Meter, time: Second) { return (dist as number) / (time as number) }

// speed(t, d)  // compile error: brands do not match

जेनरिक ब्रांड सहायक

डोमेन में एक सामान्य Brand सहायक का उपयोग करें: प्रकारित ID, टोकन, कर्सर आदि के लिए।

type Brand<Tag extends string, T> = T & { readonly __brand: Tag }

type UserId = Brand<"UserId", string>
type OrderId = Brand<"OrderId", string>

function userId(x: string): UserId { return x as UserId }
function orderId(x: string): OrderId { return x as OrderId }

function findUser(id: UserId) { /* ... */ }

const u = userId("u_123")
const o = orderId("o_456")
// findUser(o) // error: OrderId not assignable to UserId

यूनिक सिम्बल ब्रांड

यूनिक सिम्बल ब्रांड नामों के टकराव और ग्लोबल नेमस्पेस में अनचाहे रिसाव से बचाता है।

declare const MeterSym: unique symbol

type Meter2 = number & { readonly [MeterSym]: "meter" }

function asMeter2(n: number): Meter2 { return n as Meter2 }

const m2 = asMeter2(5)
// const wrong: Meter2 = 5  // discourage raw assignment; prefer factories

फ़ैक्टरी और सत्यापन

ब्रांड को एक फ़ैक्टरी के अंदर दें: पहले सत्यापित करें, फिर ब्रांड लगाएँ और उसके बाद उपयोग करें। कॉल साइट पर मनमाने as से बचें।

type NonEmptyString = string & { readonly __brand: "NonEmpty" }

function nonEmpty(s: string): NonEmptyString | null {
  return s.trim().length > 0 ? (s as NonEmptyString) : null
}

function makeSlug(s: NonEmptyString) {
  return (s as string).toLowerCase().replace(/\s+/g, "-")
}

const ok = nonEmpty(" Hello ")
if (ok) { makeSlug(ok) }  // safe: validated & branded first

सुझाव और सावधानियाँ

सर्वोत्तम अभ्यास:

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

ब्रांड जाँच

त्वरित जाँच: कौन-सा पैटर्न इकाइयों और टैगों की अदला-बदली रोकता है?

पुनरावलोकन

पुनरावलोकन: ब्रांडेड/अपारदर्शी प्रकार एक जैसे दिखने वाले मानों को अलग रखते हैं (मीटर बनाम सेकंड, UserId बनाम OrderId)। इन्हें फ़ैक्टरियों के ज़रिए बनाएँ, API में उपयोग करें और अनजाने मिश्रण को समाप्त करें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ TypeScript सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
101
पाठ
352

अक्सर पूछे जाने वाले प्रश्न

क्या “इकाइयों के मिश्रण को रोकने वाले ब्रांडेड/अपारदर्शी प्रकार” पाठ निःशुल्क है?

हाँ—“इकाइयों के मिश्रण को रोकने वाले ब्रांडेड/अपारदर्शी प्रकार” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और TypeScript Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। TypeScript Academy पाठ्यक्रम में कुल 3 पाठ शामिल हैं।

“इकाइयों के मिश्रण को रोकने वाले ब्रांडेड/अपारदर्शी प्रकार” में मैं क्या सीखूँगा?

आधार प्रकारों को फैंटम ब्रांड प्रॉपर्टी के साथ इंटरसेक्ट करके इकाइयों या टैग के मिश्रण को रोकें; निर्माण केवल फ़ैक्टरी फ़ंक्शन से करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ TypeScript Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या TypeScript Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर TypeScript Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 3 में से 1वाँ पाठ है।

“इकाइयों के मिश्रण को रोकने वाले ब्रांडेड/अपारदर्शी प्रकार” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस TypeScript Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर TypeScript Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. इकाइयों के मिश्रण को रोकने वाले ब्रांडेड/अपारदर्शी प्रकार
  2. टैग किए गए ID और डोमेन मॉडलिंग पैटर्न
  3. डोमेन मॉडलिंग — एग्रीगेट, अपरिवर्तनीय शर्तें और सेवाएँ
← TypeScript Academy पर वापस जाएँ