प्रकारों के साथ बहुवचन
बहुवचन रूपों का प्रकार-सुरक्षित तरीके से मॉडल बनाएँ।
प्रकारों के साथ बहुवचन, CoddyKit पर TypeScript Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह TypeScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
टाइप-सुरक्षित बहुवचन-निर्धारण
भाषाओं को बहुवचन रूपों की आवश्यकता होती है: "1 आइटम" बनाम "2 आइटम"। टाइप-सुरक्षित i18n बहुवचन श्रेणियों (जैसे one / other) का मॉडल बनाता है और count आर्गुमेंट आवश्यक करता है, ताकि आप इसे कभी न भूलें।
बहुवचन श्रेणियाँ
Intl के बहुवचन नियम zero, one, two, few, many, other जैसी श्रेणियाँ परिभाषित करते हैं। अंग्रेज़ी में केवल one और other का उपयोग होता है; अन्य locales में अधिक श्रेणियाँ होती हैं।
type PluralCategory = "zero" | "one" | "two" | "few" | "many" | "other";बहुवचन संदेश का रूप
बहुवचन संदेश को श्रेणी की कुंजियों वाले ऑब्जेक्ट के रूप में निरूपित करें। other आवश्यक वैकल्पिक रूप है।
type PluralMessage = {
other: string;
} & Partial<Record<Exclude<PluralCategory, "other">, string>>;
const items: PluralMessage = {
one: "{count} item",
other: "{count} items",
};बहुवचन और सामान्य में अंतर
एक कैटलॉग में सामान्य स्ट्रिंग्स और बहुवचन ऑब्जेक्ट मिले-जुले होते हैं। आर्गुमेंट्स की आवश्यकताएँ अलग होती हैं, इसलिए हम टाइप-स्तर पर इस रूप का पता लगाते हैं।
type IsPlural<M> = M extends { other: string } ? true : false;गणना आवश्यक करना
जब कोई संदेश बहुवचन हो, तो अनुवाद आर्गुमेंट्स में संख्यात्मक count शामिल होना चाहिए। हम आर्गुमेंट्स के प्रकार की गणना सशर्त रूप से करते हैं।
type PluralArgs<M> = IsPlural<M> extends true
? { count: number }
: {};
type A = PluralArgs<typeof items>; // { count: number }बहुवचनों के लिए टाइप-सुरक्षित अनुवाद फ़ंक्शन
कैटलॉग की खोज को सशर्त आर्गुमेंट्स के साथ मिलाएँ, ताकि बहुवचन संदेशों में count आवश्यक हो और सामान्य संदेशों में नहीं।
declare const cat: {
items: { one: string; other: string };
hello: string;
};
declare function t<K extends keyof typeof cat>(
key: K,
args: PluralArgs<(typeof cat)[K]>
): string;
t("items", { count: 3 }); // ok
t("items", {}); // Error: count required
t("hello", {}); // okरनटाइम पर रूप चुनना
रनटाइम पर Intl.PluralRules संख्या के आधार पर श्रेणी चुनता है और आप उससे मेल खाती स्ट्रिंग पढ़ते हैं (other पर वापस जाकर)।
function plural(msg: { other: string; [k: string]: string }, count: number, locale: string) {
const cat = new Intl.PluralRules(locale).select(count);
return (msg[cat] ?? msg.other);
}इंटरपोलेशन के साथ संयोजन
बहुवचन स्ट्रिंग्स में आमतौर पर {count} भी होता है। आर्गुमेंट्स का प्रकार बहुवचन की आवश्यकताओं को चुने हुए रूप से निकाले गए इंटरपोलेशन चरों के साथ जोड़ सकता है।
type FullArgs<M> = PluralArgs<M> & ExtractVars<M>;
// count plus any {placeholders} in the messageअधिक समृद्ध रूपों वाले locales
कुछ locales (जैसे पोलिश और रूसी) में few और many का उपयोग होता है। क्योंकि PluralCategory में ये पहले से शामिल हैं, कैटलॉग इन कुंजियों को दे सकता है और वही व्यवस्था उन्हें संभाल लेती है।
const ruItems = {
one: "{count} товар",
few: "{count} товара",
many: "{count} товаров",
other: "{count} товара",
};अन्य वैकल्पिक रूप लागू करना
क्योंकि other, PluralMessage में अनिवार्य है, टाइप प्रणाली सुनिश्चित करती है कि एक वैकल्पिक रूप मौजूद हो और ऐसी रनटाइम स्थिति को रोकती है जिसमें कोई बहुवचन रूप मेल न खाए।
यह क्यों महत्वपूर्ण है
बहुवचन संबंधी त्रुटियाँ ("1 आइटम्स") और गणना भूल जाना बिना टाइप वाले i18n में आम हैं। श्रेणियों को प्रकारों के रूप में मॉडल करना और count आवश्यक करना सही बहुवचन-निर्धारण को डिफ़ॉल्ट बना देता है और गणना के गायब होने को संकलन त्रुटि बना देता है।
त्वरित जाँच
टाइप-सुरक्षित बहुवचन-निर्धारण की अपनी समझ जाँचें।
पुनरावलोकन
आपने बहुवचनों को बहुवचन श्रेणियों की कुंजियों वाले ऑब्जेक्ट के रूप में मॉडल किया, जिसमें other का अनिवार्य वैकल्पिक रूप था; टाइप-स्तर पर बहुवचन संदेशों का पता लगाया और सशर्त प्रकारों के माध्यम से संख्यात्मक count आर्गुमेंट आवश्यक किया। Intl.PluralRules रनटाइम पर रूप चुनता है और यही व्यवस्था अधिक समृद्ध locales तक भी काम करती है।
एआई शिक्षक के साथ TypeScript सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 101
- पाठ
- 352
अक्सर पूछे जाने वाले प्रश्न
क्या “प्रकारों के साथ बहुवचन” पाठ निःशुल्क है?
हाँ—“प्रकारों के साथ बहुवचन” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और TypeScript Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“प्रकारों के साथ बहुवचन” में मैं क्या सीखूँगा?
बहुवचन रूपों का प्रकार-सुरक्षित तरीके से मॉडल बनाएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ TypeScript Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या TypeScript Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर TypeScript Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“प्रकारों के साथ बहुवचन” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस TypeScript Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर TypeScript Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- अनुवाद कुंजियों के प्रकार निर्धारित करना
- इंटरपोलेशन की प्रकार सुरक्षा
- प्रकारों के साथ बहुवचन
- लोकेल-जागरूक प्रकार अनुमान