TypeScript Academy · पाठ

गणना भाषा के रूप में प्रकार

प्रकार प्रणाली को एक शुद्ध कार्यात्मक भाषा के रूप में समझें।

पाठ 1, कुल 4 में से13 चरण

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

प्रकार एक भाषा हैं

TypeScript में साथ-साथ रहने वाली दो भाषाएँ हैं। एक मान-स्तर की JavaScript है, जिससे आप पहले से परिचित हैं। दूसरी प्रकार-स्तर की भाषा है, जो पूरी तरह संकलन समय पर चलती है। इस पाठ्यक्रम में आप उस दूसरी भाषा में प्रोग्राम करना सीखते हैं।

प्रकार प्रणाली एक छोटी, शुद्ध, कार्यात्मक भाषा है। आप उसे प्रकार प्रवेश के रूप में देते हैं और वह प्रकार निर्गम के रूप में निकालती है। इसमें से कुछ भी प्रोग्राम चलने के समय मौजूद नहीं रहता।

type Greeting = "hello";
type Loud = Uppercase<Greeting>;
// Loud is "HELLO" - computed by the type system

प्रकारों का प्रवेश, प्रकारों का निर्गम

सामान्य प्रकार मूलतः प्रकारों से प्रकारों तक जाने वाला फ़ंक्शन होता है। प्रकार प्राचल उसका तर्क होता है और मुख्य भाग वापसी मान होता है।

नीचे, Boxed एक प्रकार T लेता है और उसे समेटने वाला वस्तु प्रकार बनाता है। T को उस प्राचल के रूप में समझें जिसे आप अंदर देते हैं।

type Boxed<T> = { value: T };

type A = Boxed<number>; // { value: number }
type B = Boxed<string>; // { value: string }

सामान्य प्रकार फ़ंक्शन होते हैं

मान-स्तर के फ़ंक्शन की तुलना प्रकार-स्तर के फ़ंक्शन से करें। दोनों की संरचना लगभग एक जैसी है: प्राचल अंदर और एक परिणाम बाहर।

  • मान: const id = (x) => x
  • प्रकार: type Id<T> = T

प्रकार-स्तर का Id आपको दिया गया मान ज्यों का त्यों लौटा देता है।

type Id<T> = T;

type X = Id<boolean>; // boolean
type Y = Id<"abc">;  // "abc"

चलने के समय कोई लागत नहीं

प्रकार-स्तर की हर चीज़ आपका कोड चलने से पहले हटा दी जाती है। JavaScript आउटपुट में आपकी प्रकार-गणनाओं का कोई निशान नहीं रहता। प्रोग्राम चलने पर कोई प्रदर्शन-लागत नहीं होती, चाहे आपके प्रकार कितने भी जटिल क्यों न हों।

इसी कारण प्रकार-स्तरीय प्रोग्रामिंग को कभी-कभी निःशुल्क कहा जाता है: यह केवल संकलक को प्रभावित करती है, बनाए गए पैकेज को कभी नहीं।

type Pair<T> = [T, T];
const p: Pair<number> = [1, 2];
// Compiled JS is just: const p = [1, 2];
console.log(p);

अनेक प्राचल

प्रकार-स्तर के फ़ंक्शन सामान्य फ़ंक्शनों की तरह कई प्राचल ले सकते हैं। यहाँ Merge दो वस्तु प्रकार लेकर उन्हें जोड़ता है।

इसे ऐसे पढ़ें: A और B दिए जाने पर ऐसा वस्तु लौटाएँ जिसमें दोनों के सभी गुण हों।

type Merge<A, B> = A & B;

type User = { id: number };
type Named = { name: string };
type NamedUser = Merge<User, Named>;
// { id: number; name: string }

पैरामीटर के डिफ़ॉल्ट मान

प्रकार पैरामीटर में डिफ़ॉल्ट मान हो सकते हैं, ठीक वैसे ही जैसे फ़ंक्शन आर्ग्युमेंट में डिफ़ॉल्ट मान होते हैं। यदि कॉल करने वाला आर्ग्युमेंट नहीं देता है, तो डिफ़ॉल्ट मान का उपयोग किया जाता है।

type List<T = string> = T[];

type A = List;        // string[]
type B = List<number>; // number[]

प्रतिबंध सुरक्षा-रक्षक हैं

extends वाला प्रतिबंध यह सीमित करता है कि कौन-से प्रकार दिए जा सकते हैं। यह उपयोग करने से पहले किसी फ़ंक्शन आर्ग्युमेंट का सत्यापन करने के प्रकार-स्तरीय समकक्ष है।

HasId केवल उन प्रकारों को स्वीकार करता है जिनमें पहले से id गुणधर्म मौजूद हो, इसलिए उसका मुख्य भाग इसे सुरक्षित रूप से पढ़ सकता है।

type GetId<T extends { id: number }> = T["id"];

type A = GetId<{ id: number; name: string }>; // number
// GetId<{ name: string }> would be a compile error

केवल टिप्पणी नहीं, गणना भी

शुरुआती विद्यार्थी प्रकारों का उपयोग केवल मानों को नाम देने के लिए करते हैं। प्रकार-स्तरीय प्रोग्रामिंग उत्तरों की गणना करने के लिए प्रकारों का उपयोग करती है। उदाहरण के लिए, अंतर्निर्मित ReturnType उपयोगिता किसी फ़ंक्शन प्रकार का निरीक्षण करके उसका परिणाम प्रकार निकालती है।

type Fn = (a: number) => string;
type R = ReturnType<Fn>; // string

type Fn2 = () => boolean;
type R2 = ReturnType<Fn2>; // boolean

गुणधर्मों पर मानचित्रण

मैप किए गए प्रकार आपको किसी ऑब्जेक्ट प्रकार के हर गुणधर्म को बदलने देते हैं। यह प्रकार-भाषा में एक दोहराव है। Stringify हर मान प्रकार को string में बदल देता है।

type Stringify<T> = { [K in keyof T]: string };

type Input = { a: number; b: boolean };
type Out = Stringify<Input>; // { a: string; b: string }

शुद्ध और नियतात्मक

प्रकार-भाषा शुद्ध है: समान प्रवेश मान हमेशा समान निर्गम प्रकार उत्पन्न करते हैं और कोई पार्श्व प्रभाव नहीं होता। इसमें कोई परिवर्तन, कोई IO और कोई समय नहीं होता। यही शुद्धता प्रकार-स्तरीय प्रोग्रामों को पूर्वानुमेय और संयोज्य बनाती है।

शुद्धता के कारण, आप प्रकारों के बारे में उसी तरह तर्क करते हैं जैसे गणित के बारे में: प्रतिस्थापन द्वारा।

type Square<T extends { area: number }> = T["area"];
// Always the same result for the same input shape

यह महत्वपूर्ण क्यों है

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

मुख्य दृष्टिकोण: प्रकार-भाषा में कोई प्रकार एक मान होता है और सामान्य प्रकार एक फ़ंक्शन होता है।

type NonEmpty<T extends unknown[]> =
  T extends [unknown, ...unknown[]] ? T : never;
// Encodes a rule: the tuple must have at least one element

त्वरित जाँच

गणना-भाषा के रूप में प्रकारों की अपनी समझ का परीक्षण कीजिए।

पुनरावलोकन

आपने सीखा कि TypeScript प्रकार एक शुद्ध फलनात्मक भाषा बनाते हैं, जो संकलन के समय चलती है।

  • सामान्य प्रकार फ़ंक्शन होते हैं: प्रकार अंदर, प्रकार बाहर।
  • पैरामीटर डिफ़ॉल्ट मानों और extends प्रतिबंधों का समर्थन करते हैं।
  • मैप किए गए प्रकार गुणधर्मों पर दोहराव करते हैं।
  • हर चीज़ मिटा दी जाती है, इसलिए रनटाइम लागत नहीं होती।

अगले चरण में, आप इस भाषा में एक शर्तीय कथन जोड़ेंगे: सशर्त प्रकार।

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

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

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

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

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

क्या “गणना भाषा के रूप में प्रकार” पाठ निःशुल्क है?

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

“गणना भाषा के रूप में प्रकार” में मैं क्या सीखूँगा?

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

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

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

“गणना भाषा के रूप में प्रकार” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. गणना भाषा के रूप में प्रकार
  2. प्रकार-स्तरीय सशर्त
  3. प्रकार-स्तरीय पुनरावृत्ति
  4. वितरक सशर्त प्रकार
← TypeScript Academy पर वापस जाएँ