TypeScript में कार्यात्मक प्रोग्रामिंग: A से Z तक

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

TypeScript में कार्यात्मक प्रोग्रामिंग: A से Z तक

\n\n

कार्यात्मक प्रोग्रामिंग (FP) एक प्रतिमान है जो गणना को गणितीय फ़ंक्शनों के मूल्यांकन के रूप में मानता है और स्थिति में परिवर्तन और परिवर्तनीय डेटा से बचता है। TypeScript, JavaScript का एक सख्ती से टाइप किया गया विस्तार होने के नाते, FP के सिद्धांतों को लागू करने के लिए एक उत्कृष्ट आधार प्रदान करता है, जिससे अधिक पूर्वानुमानित, परीक्षण योग्य और विश्वसनीय कोड लिखा जा सकता है। इस लेख में, हम TypeScript में FP की मुख्य अवधारणाओं को मूल बातों से लेकर उन्नत तकनीकों तक समझेंगे।

\n\n

कार्यात्मक प्रोग्रामिंग के मूल सिद्धांत

\n\n

कोड में गहराई से जाने से पहले, उन मूलभूत सिद्धांतों को समझना महत्वपूर्ण है जिन पर FP आधारित है।

\n\n

शुद्ध फ़ंक्शन (Pure Functions)

\n

शुद्ध फ़ंक्शन वह फ़ंक्शन है जो:

\n
    \n
  • समान तर्कों के लिए हमेशा समान परिणाम लौटाता है (नियतात्मकता)।
  • \n
  • इसका कोई दुष्प्रभाव नहीं होता (बाहरी चर नहीं बदलता, कंसोल में डेटा आउटपुट नहीं करता, अनुरोध नहीं भेजता)।
  • \n
\n

शुद्ध फ़ंक्शन का उदाहरण:

\n
function add(a: number, b: number): number {\n  return a + b;\n}\n\n// हमेशा पूर्वानुमानित\nconsole.log(add(2, 3)); // 5\nconsole.log(add(2, 3)); // 5
\n\n

अशुद्ध फ़ंक्शन का उदाहरण:

\n
let counter = 0;\nfunction increment(): number {\n  return ++counter; // दुष्प्रभाव: बाहरी चर में परिवर्तन\n}
\n\n

अपरिवर्तनीयता (Immutability)

\n

डेटा बनने के बाद उसे नहीं बदला जाना चाहिए। मौजूदा ऑब्जेक्ट को बदलने के बजाय, हम आवश्यक परिवर्तनों के साथ उसकी एक नई प्रतिलिपि बनाते हैं।

\n
interface User {\n  name: string;\n  age: number;\n}\n\nconst user: User = { name: "Alice", age: 30 };\n\n// बुरा (म्यूटेशन)\nuser.age = 31;\n\n// अच्छा (अपरिवर्तनीयता)\nconst updatedUser: User = { ...user, age: 31 };\n\nconsole.log(user); // { name: "Alice", age: 30 } - मूल नहीं बदला\nconsole.log(updatedUser); // { name: "Alice", age: 31 }
\n\n

TypeScript में संयोजन और करीइंग

\n

फ़ंक्शन संयोजन अधिक जटिल फ़ंक्शन बनाने के लिए कई सरल फ़ंक्शनों को संयोजित करने की प्रक्रिया है। करीइंग (currying) एकाधिक तर्कों वाले फ़ंक्शन को फ़ंक्शनों के अनुक्रम में बदलना है, जिनमें से प्रत्येक एक तर्क लेता है।

\n\n

फ़ंक्शन संयोजन (Function Composition)

\n

TypeScript में संयोजन का टाइप किया गया कार्यान्वयन:

\n
function compose<A, B, C>(f: (x: B) => C, g: (x: A) => B): (x: A) => C {\n  return (x: A) => f(g(x));\n}\n\nconst toUpperCase = (str: string): string => str.toUpperCase();\nconst exclaim = (str: string): string => `${str}!`;\n\nconst shout = compose(exclaim, toUpperCase);\nconsole.log(shout("hello world")); // "HELLO WORLD!"
\n\n

करीइंग (Currying)

\n

करी किए गए फ़ंक्शन का उदाहरण:

\n
function multiply(a: number): (b: number) => number {\n  return (b: number) => a * b;\n}\n\nconst double = multiply(2);\nconst triple = multiply(3);\n\nconsole.log(double(5)); // 10\nconsole.log(triple(5)); // 15
\n

करीइंग फ़ंक्शनों को अधिक लचीला और संयोजन के लिए सुविधाजनक बनाता है।

\n\n

मोनाड के साथ कार्य: Option और Result

\n

मोनाड फ़ंक्शनों की शुद्धता का उल्लंघन किए बिना दुष्प्रभावों और त्रुटि प्रबंधन के साथ काम करने के लिए एक शक्तिशाली पैटर्न है। TypeScript में अक्सर Option (या Maybe) और Result (या Either) मोनाड का उपयोग किया जाता है।

\n\n

Option (Maybe) मोनाड

\n

उन मानों के साथ सुरक्षित रूप से काम करने की अनुमति देता है जो null या undefined हो सकते हैं।

\n
type Option<T> = T | null;\n\nfunction safeDivide(a: number, b: number): Option<number> {\n  return b === 0 ? null : a / b;\n}\n\nfunction getValue(value: Option<number>): string {\n  if (value === null) {\n    return "त्रुटि: शून्य से भाग";\n  }\n  return `परिणाम: ${value}`;\n}\n\nconsole.log(getValue(safeDivide(10, 2)                

ब्लॉग

पुस्तक अनुशंसाएँ