इफ़ेक्ट संयोजन
pipe और जनरेटर के साथ इफ़ेक्ट को क्रम से जोड़ें और मिलाएँ।
इफ़ेक्ट संयोजन, CoddyKit पर TypeScript Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह TypeScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
इफ़ेक्ट संयोजित करना
इफ़ेक्ट मान होते हैं, इसलिए आप उन्हें संयोजित करके प्रोग्राम बनाते हैं। मुख्य साधन Effect.pipe, Effect.map, Effect.flatMap और जनरेटर-आधारित Effect.gen वाक्यविन्यास हैं।
pipe: फ़ंक्शनों के माध्यम से प्रवाहित करना
pipe किसी इफ़ेक्ट को बाएँ से दाएँ कई रूपांतरणों की शृंखला से गुज़ारता है, जिससे गहरी नेस्टिंग से बचा जा सकता है।
import { Effect, pipe } from "effect";
const program = pipe(
Effect.succeed(2),
Effect.map((n) => n + 1),
Effect.map((n) => n * 10)
);
// Effect<number, never, never> producing 30map: सफलता के मान को बदलना
Effect.map सफलता के मान पर एक शुद्ध फ़ंक्शन लागू करता है और त्रुटि तथा आवश्यकता चैनलों को अपरिवर्तित रखता है।
import { Effect } from "effect";
const doubled = Effect.map(Effect.succeed(21), (n) => n * 2);
// Effect<number, never, never>flatMap: इफ़ेक्ट का क्रमबद्ध निष्पादन
जब अगला चरण स्वयं एक इफ़ेक्ट हो, तो flatMap (जिसे chain भी कहा जाता है) का उपयोग करें। यह पहले इफ़ेक्ट को चलाता है और फिर उसके मान को दूसरे इफ़ेक्ट लौटाने वाले फ़ंक्शन में भेजता है।
import { Effect, pipe } from "effect";
const getId = Effect.succeed(1);
const loadUser = (id: number) => Effect.succeed({ id, name: "Ada" });
const program = pipe(getId, Effect.flatMap(loadUser));
// Effect<{ id: number; name: string }, never, never>map बनाम flatMap
जब आपका फ़ंक्शन साधारण मान लौटाता है, तब map का उपयोग करें; जब वह इफ़ेक्ट लौटाता है, तब flatMap का उपयोग करें। इफ़ेक्ट लौटाने वाले फ़ंक्शन के साथ map का उपयोग करने पर आपको नेस्टेड इफ़ेक्ट मिलता है।
चैनल जमा होते हैं
जब आप इफ़ेक्ट का क्रम बनाते हैं, तो उनके त्रुटि प्रकार यूनियन के रूप में जुड़ते हैं और उनकी आवश्यकताएँ भी यूनियन के रूप में जुड़ती हैं। संयोजित प्रकार हर उस चीज़ को दर्शाता है जो विफल हो सकती है और हर वह चीज़ जिसकी आवश्यकता है।
// Effect<A, E1, R1> then Effect<B, E2, R2>
// => Effect<B, E1 | E2, R1 | R2>Effect.gen: जनरेटर वाक्यविन्यास
Effect.gen आपको ऐसा क्रमिक इफ़ेक्ट कोड लिखने देता है जो async/await जैसा पढ़ा जाता है और प्रत्येक इफ़ेक्ट को खोलने के लिए yield* का उपयोग करता है।
import { Effect } from "effect";
const program = Effect.gen(function* () {
const id = yield* Effect.succeed(1);
const user = yield* Effect.succeed({ id, name: "Ada" });
return user.name;
});
// Effect<string, never, never>gen बनाम pipe
मध्यवर्ती चरों वाले रैखिक, बहु-चरणीय प्रवाह के लिए gen अधिक स्पष्ट है; छोटी रूपांतरण शृंखलाओं के लिए pipe बेहतर है। दोनों को स्वतंत्र रूप से एक साथ इस्तेमाल किया जा सकता है।
स्वतंत्र इफ़ेक्ट को संयोजित करना
Effect.all कई इफ़ेक्ट चलाता है और उनके परिणाम एकत्र करता है, साथ ही सभी की त्रुटियों और आवश्यकताओं को जमा करता है।
import { Effect } from "effect";
const both = Effect.all([Effect.succeed(1), Effect.succeed("x")]);
// Effect<[number, string], never, never>अब भी आलसी
यह सब केवल प्रोग्राम का विवरण देता है। जब तक आप उसे किनारे पर Effect.runPromise या Effect.runSync से नहीं चलाते, तब तक कुछ भी निष्पादित नहीं होता।
import { Effect } from "effect";
// const result = await Effect.runPromise(program);यह क्यों महत्वपूर्ण है
संयोजन ही इफ़ेक्ट को व्यावहारिक बनाता है: आप छोटे, टाइप किए गए हिस्सों को जोड़कर बड़े प्रोग्राम बनाते हैं, जबकि कंपाइलर हर त्रुटि और निर्भरता पर नज़र रखता है। map, flatMap, pipe और gen, इफ़ेक्ट कोड में रोज़मर्रा में इस्तेमाल होने वाली क्रियाएँ हैं।
त्वरित जाँच
इफ़ेक्ट के संयोजन की अपनी समझ जाँचिए।
पुनरावलोकन
आप इफ़ेक्ट को map (सफलता मानों को बदलना), flatMap (इफ़ेक्ट लौटाने वाले चरणों को क्रम से चलाना), pipe (रूपांतरणों के माध्यम से आगे बढ़ाना) और Effect.gen (await-जैसी जनरेटर सिंटैक्स) से संयोजित करते हैं। त्रुटि और आवश्यकता चैनल यूनियन के रूप में संचित होते हैं, और किनारे पर निष्पादित करने तक कुछ भी नहीं चलता।
एआई शिक्षक के साथ TypeScript सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 101
- पाठ
- 352
अक्सर पूछे जाने वाले प्रश्न
क्या “इफ़ेक्ट संयोजन” पाठ निःशुल्क है?
हाँ—“इफ़ेक्ट संयोजन” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और TypeScript Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“इफ़ेक्ट संयोजन” में मैं क्या सीखूँगा?
pipe और जनरेटर के साथ इफ़ेक्ट को क्रम से जोड़ें और मिलाएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ TypeScript Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या TypeScript Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर TypeScript Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“इफ़ेक्ट संयोजन” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस TypeScript Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर TypeScript Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।