टाइपस्क्रिप्ट - कार्य

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

एक फंक्शन डिक्लेरेशन कंपाइलर को फंक्शन के नाम, रिटर्न टाइप और पैरामीटर्स के बारे में बताता है। एक फ़ंक्शन परिभाषा फ़ंक्शन का वास्तविक निकाय प्रदान करती है।

अनु क्रमांक फंटियन और विवरण
1। एक कार्य को परिभाषित करना

एक फ़ंक्शन परिभाषा निर्दिष्ट करती है कि एक विशिष्ट कार्य क्या और कैसे किया जाएगा।

2। एक समारोह बुला रहा है

एक फ़ंक्शन को इसे निष्पादित करने के लिए बुलाया जाना चाहिए।

3। लौटाने के कार्य

नियंत्रण वापस कॉल करने वाले के साथ-साथ मूल्य भी लौटा सकता है।

4। परिमाणित फलन

पैरामीटर फ़ंक्शन के मानों को पारित करने के लिए एक तंत्र है।

वैकल्पिक पैरामीटर

वैकल्पिक मापदंडों का उपयोग तब किया जा सकता है जब फ़ंक्शन के निष्पादन के लिए तर्कों को अनिवार्य रूप से पारित नहीं किया जाना चाहिए। एक पैरामीटर को उसके नाम पर एक प्रश्न चिह्न जोड़कर वैकल्पिक चिह्नित किया जा सकता है। वैकल्पिक पैरामीटर को किसी फ़ंक्शन में अंतिम तर्क के रूप में सेट किया जाना चाहिए। वैकल्पिक पैरामीटर के साथ एक फ़ंक्शन घोषित करने का सिंटैक्स नीचे दिया गया है -

function function_name (param1[:type], param2[:type], param3[:type])

उदाहरण: वैकल्पिक पैरामीटर

function disp_details(id:number,name:string,mail_id?:string) { 
   console.log("ID:", id); 
   console.log("Name",name); 
   
   if(mail_id!=undefined)  
   console.log("Email Id",mail_id); 
}
disp_details(123,"John");
disp_details(111,"mary","[email protected]");
  • उपरोक्त उदाहरण एक पैरामीटरकृत फ़ंक्शन घोषित करता है। यहां, तीसरा पैरामीटर, यानी, mail_id एक वैकल्पिक पैरामीटर है।

  • यदि फ़ंक्शन कॉल के दौरान एक वैकल्पिक पैरामीटर एक मान पारित नहीं किया जाता है, तो पैरामीटर का मान अपरिभाषित होता है।

  • फ़ंक्शन केवल mail_id के मान को प्रिंट करता है, यदि तर्क को मान दिया जाता है।

संकलन करने पर, यह जावास्क्रिप्ट कोड निम्नलिखित उत्पन्न करेगा -

//Generated by typescript 1.8.10
function disp_details(id, name, mail_id) {
   console.log("ID:", id);
   console.log("Name", name);
	
   if (mail_id != undefined)
      console.log("Email Id", mail_id);
}
disp_details(123, "John");
disp_details(111, "mary", "[email protected]");

उपरोक्त कोड निम्नलिखित आउटपुट का उत्पादन करेगा -

ID:123 
Name John 
ID: 111 
Name  mary 
Email Id [email protected]

बाकी पैरामीटर

बाकी पैरामीटर जावा में चर तर्कों के समान हैं। बाकी पैरामीटर उन मानों की संख्या को प्रतिबंधित नहीं करते हैं जिन्हें आप किसी फ़ंक्शन में पास कर सकते हैं। हालाँकि, दिए गए मान सभी एक ही प्रकार के होने चाहिए। दूसरे शब्दों में, बाकी पैरामीटर एक ही प्रकार के कई तर्कों के लिए प्लेसहोल्डर के रूप में कार्य करते हैं।

बाकी पैरामीटर घोषित करने के लिए, पैरामीटर नाम तीन अवधियों के साथ उपसर्ग करता है। बाकी पैरामीटर से पहले किसी भी गैर-पैरामीटर पैरामीटर को आना चाहिए।

उदाहरण: बाकी पैरामीटर

function addNumbers(...nums:number[]) {  
   var i;   
   var sum:number = 0; 
   
   for(i = 0;i<nums.length;i++) { 
      sum = sum + nums[i]; 
   } 
   console.log("sum of the numbers",sum) 
} 
addNumbers(1,2,3) 
addNumbers(10,10,10,10,10)
  • फ़ंक्शन addNumbers () घोषणा, बाकी पैरामीटर संख्या को स्वीकार करता है । बाकी पैरामीटर्स का डेटा प्रकार एक सरणी में सेट किया जाना चाहिए। इसके अलावा, एक फ़ंक्शन में एक सबसे अधिक आराम पैरामीटर हो सकता है।

  • तीन और छह मूल्यों को पारित करके, समारोह को दो बार लागू किया जाता है।

  • लूप के लिए तर्क सूची के माध्यम से पुनरावृत्त होता है, फ़ंक्शन में जाता है और उनकी राशि की गणना करता है।

संकलन करने पर, यह जावास्क्रिप्ट कोड निम्नलिखित उत्पन्न करेगा -

function addNumbers() {
   var nums = [];
   for (var _i = 0; _i < arguments.length; _i++) {
      nums[_i - 0] = arguments[_i];
   }
	var i;
   var sum = 0;
	
   for (i = 0; i < nums.length; i++) {
      sum = sum + nums[i];
   }
   console.log("sum of the numbers", sum);
}
addNumbers(1, 2, 3);
addNumbers(10, 10, 10, 10, 10);

उपरोक्त कोड का आउटपुट निम्नानुसार है -

sum of numbers 6 
sum of numbers 50

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

फ़ंक्शन पैरामीटर को डिफ़ॉल्ट रूप से मान भी सौंपा जा सकता है। हालांकि, ऐसे पैरामीटर भी स्पष्ट रूप से पारित मूल्य हो सकते हैं।

वाक्य - विन्यास

function function_name(param1[:type],param2[:type] = default_value) { 
}

Note - एक पैरामीटर को एक ही समय में वैकल्पिक और डिफ़ॉल्ट घोषित नहीं किया जा सकता है।

उदाहरण: डिफ़ॉल्ट पैरामीटर

function calculate_discount(price:number,rate:number = 0.50) { 
   var discount = price * rate; 
   console.log("Discount Amount: ",discount); 
} 
calculate_discount(1000) 
calculate_discount(1000,0.30)

संकलन करने पर, यह जावास्क्रिप्ट कोड निम्नलिखित उत्पन्न करेगा -

//Generated by typescript 1.8.10
function calculate_discount(price, rate) {
   if (rate === void 0) { rate = 0.50; }
   var discount = price * rate;
   console.log("Discount Amount: ", discount);
}
calculate_discount(1000);
calculate_discount(1000, 0.30);

इसका आउटपुट निम्नानुसार है -

Discount amount : 500 
Discount amount : 300
  • उदाहरण फ़ंक्शन की गणना करता है, calcul_discount । फ़ंक्शन के दो पैरामीटर हैं - मूल्य और दर।

  • पैरामीटर दर का मान डिफ़ॉल्ट रूप से 0.50 पर सेट है ।

  • कार्यक्रम फ़ंक्शन को आमंत्रित करता है, यह केवल पैरामीटर मूल्य के मूल्य को पारित करता है। यहां, दर का मान 0.50 (डिफ़ॉल्ट) है

  • एक ही फ़ंक्शन को लागू किया जाता है, लेकिन दो तर्कों के साथ। दर का डिफ़ॉल्ट मान ओवरराइट किया गया है और स्पष्ट रूप से पारित मूल्य पर सेट है।

अनाम क्रिया

ऐसे फ़ंक्शंस जो किसी पहचानकर्ता (फ़ंक्शन नाम) के लिए बाध्य नहीं हैं, उन्हें कहा जाता है anonymous functions। इन कार्यों को गतिशील रूप से रनटाइम पर घोषित किया जाता है। अनाम फ़ंक्शंस इनपुट स्वीकार कर सकते हैं और आउटपुट वापस कर सकते हैं, जैसे कि मानक फ़ंक्शंस करते हैं। एक अनाम फ़ंक्शन आमतौर पर इसकी प्रारंभिक रचना के बाद सुलभ नहीं है।

चर को एक अनाम फ़ंक्शन सौंपा जा सकता है। ऐसी अभिव्यक्ति को फंक्शन एक्सप्रेशन कहा जाता है।

वाक्य - विन्यास

var res = function( [arguments] ) { ... }

उदाहरण An एक साधारण बेनामी फ़ंक्शन

var msg = function() { 
   return "hello world";  
} 
console.log(msg())

संकलन करने पर, यह जावास्क्रिप्ट में समान कोड उत्पन्न करेगा।

यह निम्नलिखित उत्पादन का उत्पादन करेगा -

hello world

उदाहरण ─ मापदंडों के साथ बेनामी फ़ंक्शन

var res = function(a:number,b:number) { 
   return a*b;  
}; 
console.log(res(12,2))

अनाम फ़ंक्शन इसके द्वारा दिए गए मानों का उत्पाद लौटाता है।

संकलन करने पर, यह जावास्क्रिप्ट कोड निम्नलिखित उत्पन्न करेगा -

//Generated by typescript 1.8.10
var res = function (a, b) {
   return a * b;
};
console.log(res(12, 2));

उपरोक्त कोड का आउटपुट निम्नानुसार है -

24

समारोह अभिव्यक्ति और समारोह घोषणा ression क्या वे पर्यायवाची हैं?

फंक्शन एक्सप्रेशन और फंक्शन डिक्लेरेशन पर्यायवाची नहीं हैं। एक फ़ंक्शन अभिव्यक्ति के विपरीत, एक फ़ंक्शन घोषणा फ़ंक्शन नाम से बाध्य है।

दोनों के बीच मूलभूत अंतर यह है कि, कार्य घोषणाएं उनके निष्पादन से पहले पार्स की जाती हैं। दूसरी ओर, फ़ंक्शन अभिव्यक्तियों को केवल तभी पार्स किया जाता है जब स्क्रिप्ट इंजन निष्पादन के दौरान इसका सामना करता है।

जब जावास्क्रिप्ट पार्सर मुख्य कोड प्रवाह में एक फ़ंक्शन देखता है, तो यह फ़ंक्शन घोषणा को मानता है। जब कोई फ़ंक्शन किसी स्टेटमेंट के हिस्से के रूप में आता है, तो यह एक फंक्शन एक्सप्रेशन है।

समारोह निर्माता

टाइपस्क्रिप्ट भी फंक्शन () नामक अंतर्निहित जावास्क्रिप्ट कंस्ट्रक्टर के साथ एक फ़ंक्शन को परिभाषित करने का समर्थन करता है।

वाक्य - विन्यास

var res = new Function( [arguments] ) { ... }.

उदाहरण

var myFunction = new Function("a", "b", "return a * b"); 
var x = myFunction(4, 3); 
console.log(x);

नया फ़ंक्शन () कंस्ट्रक्टर के लिए एक कॉल है जो बदले में एक फ़ंक्शन संदर्भ बनाता है और वापस करता है।

संकलन करने पर, यह जावास्क्रिप्ट में समान कोड उत्पन्न करेगा।

उपरोक्त उदाहरण कोड का आउटपुट निम्नानुसार है -

12

पुनरावर्तन और टाइपस्क्रिप्ट फ़ंक्शंस

पुनरावृत्ति एक ऑपरेशन पर पुनरावृत्ति करने के लिए एक तकनीक है जो एक परिणाम पर आने तक बार-बार खुद को एक फ़ंक्शन कॉल करता है। जब आप एक लूप के भीतर से विभिन्न मापदंडों के साथ एक ही फ़ंक्शन को बार-बार कॉल करने की आवश्यकता होती है, तो पुनरावृत्ति सबसे अच्छा लागू होती है।

उदाहरण - पुनरावृत्ति

function factorial(number) {
   if (number <= 0) {         // termination case
      return 1; 
   } else {     
      return (number * factorial(number - 1));     // function invokes itself
   } 
}; 
console.log(factorial(6));      // outputs 720

संकलन करने पर, यह जावास्क्रिप्ट में समान कोड उत्पन्न करेगा।

यहाँ इसका उत्पादन है -

720

उदाहरण: अनाम पुनरावर्ती कार्य

(function () { 
   var x = "Hello!!";   
   console.log(x)     
})()      // the function invokes itself using a pair of parentheses ()

संकलन करने पर, यह जावास्क्रिप्ट में समान कोड उत्पन्न करेगा।

इसका आउटपुट निम्नानुसार है -

Hello!!

लंबोदर कार्य

लैम्ब्डा प्रोग्रामिंग में अनाम कार्यों को संदर्भित करता है। अनाम कार्यों का प्रतिनिधित्व करने के लिए लैम्ब्डा फ़ंक्शन एक संक्षिप्त तंत्र हैं। इन कार्यों को भी कहा जाता हैArrow functions

लैम्ब्डा फंक्शन - एनाटॉमी

लाम्बा समारोह के 3 भाग हैं -

  • Parameters - एक फ़ंक्शन में वैकल्पिक रूप से पैरामीटर हो सकते हैं

  • The fat arrow notation/lambda notation (=>) - इसे ऑपरेटर के रूप में भी जाना जाता है

  • Statements - फ़ंक्शन के अनुदेश सेट का प्रतिनिधित्व करते हैं

Tip - सम्मेलन द्वारा, कॉम्पैक्ट और सटीक फ़ंक्शन घोषणा के लिए एकल अक्षर पैरामीटर के उपयोग को प्रोत्साहित किया जाता है।

लैम्ब्डा एक्सप्रेशन

यह एक अनाम फ़ंक्शन एक्सप्रेशन है जो कोड की एकल पंक्ति को इंगित करता है। इसका सिंटैक्स इस प्रकार है -

( [param1, parma2,…param n] )=>statement;

उदाहरण: लैम्ब्डा एक्सप्रेशन

var foo = (x:number)=>10 + x 
console.log(foo(100))      //outputs 110

कार्यक्रम एक लंबोदर अभिव्यक्ति समारोह घोषित करता है। फ़ंक्शन 10 का योग लौटाता है और तर्क पास हो जाता है।

संकलन करने पर, यह जावास्क्रिप्ट कोड के बाद उत्पन्न होगा।

//Generated by typescript 1.8.10
var foo = function (x) { return 10 + x; };
console.log(foo(100));      //outputs 110

यहाँ उपरोक्त कोड का उत्पादन है -

110

लाम्बा स्टेटमेंट

लैम्ब्डा स्टेटमेंट एक अनाम फ़ंक्शन घोषणा है जो कोड के एक ब्लॉक को इंगित करता है। इस सिंटैक्स का उपयोग तब किया जाता है जब फ़ंक्शन बॉडी कई लाइनों को फैलाता है। इसका सिंटैक्स इस प्रकार है -

( [param1, parma2,…param n] )=> {
 
   //code block
}

उदाहरण: लैंबडा कथन

var foo = (x:number)=> {    
   x = 10 + x 
   console.log(x)  
} 
foo(100)

फ़ंक्शन का संदर्भ लौटाया जाता है और चर में संग्रहीत किया जाता है foo

संकलन करने पर, यह जावास्क्रिप्ट कोड निम्नलिखित उत्पन्न करेगा -

//Generated by typescript 1.8.10
var foo = function (x) {
   x = 10 + x;
   console.log(x);
};
foo(100);

उपरोक्त कार्यक्रम का आउटपुट निम्नानुसार है -

110

संश्लिष्ट रूपांतर

पैरामीटर प्रकार का आविष्कार

पैरामीटर के डेटा प्रकार को निर्दिष्ट करना अनिवार्य नहीं है। ऐसे मामले में पैरामीटर का डेटा प्रकार कोई भी होता है। आइए निम्नलिखित कोड स्निपेट पर एक नज़र डालें -

var func = (x)=> { 
   if(typeof x=="number") { 
      console.log(x+" is numeric") 
   } else if(typeof x=="string") { 
      console.log(x+" is a string") 
   }  
} 
func(12) 
func("Tom")

संकलन करने पर, यह निम्नलिखित जावास्क्रिप्ट कोड उत्पन्न करेगा -

//Generated by typescript 1.8.10
var func = function (x) {
   if (typeof x == "number") {
      console.log(x + " is numeric");
   } else if (typeof x == "string") {
      console.log(x + " is a string");
   }
};
func(12);
func("Tom");

इसका आउटपुट निम्नानुसार है -

12 is numeric 
Tom is a string

एकल पैरामीटर के लिए वैकल्पिक कोष्ठक

var display = x=> { 
   console.log("The function got "+x) 
} 
display(12)

संकलन करने पर, यह जावास्क्रिप्ट कोड निम्नलिखित उत्पन्न करेगा -

//Generated by typescript 1.8.10
var display = function (x) {
   console.log("The function got " + x);
};
display(12);

इसका आउटपुट निम्नानुसार है -

The function got 12

एकल कथन के लिए वैकल्पिक ब्रेसिज़, बिना पैरामीटर के खाली कोष्ठक

निम्नलिखित उदाहरण इन दो Syntactic बदलावों को दर्शाता है।

var disp =()=> { 
   console.log("Function invoked"); 
} 
disp();

संकलन करने पर, यह जावास्क्रिप्ट कोड निम्नलिखित उत्पन्न करेगा -

//Generated by typescript 1.8.10
var disp = function () {
   console.log("Function invoked");
};
disp();

इसका आउटपुट निम्नानुसार है -

Function invoked

समारोह अधिभार

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

टाइपस्क्रिप्ट में किसी फ़ंक्शन को ओवरलोड करने के लिए, आपको नीचे दिए गए चरणों का पालन करना होगा -

Step 1- एक ही नाम पर अलग-अलग फ़ंक्शन हस्ताक्षर के साथ कई फ़ंक्शन घोषित करें। समारोह हस्ताक्षर में निम्नलिखित शामिल हैं।

  • The data type of the parameter

function disp(string):void; 
function disp(number):void;
  • The number of parameters

function disp(n1:number):void; 
function disp(x:number,y:number):void;
  • The sequence of parameters

function disp(n1:number,s1:string):void; 
function disp(s:string,n:number):void;

Note - फ़ंक्शन हस्ताक्षर फ़ंक्शन के रिटर्न प्रकार को शामिल नहीं करता है।

Step 2- घोषणा को फंक्शन की परिभाषा के अनुसार होना चाहिए। पैरामीटर प्रकारों को सेट किया जाना चाहिएanyयदि अधिभार के दौरान पैरामीटर प्रकार भिन्न होते हैं। इसके अतिरिक्त, के लिएcase b ऊपर समझाया गया है, आप फ़ंक्शन परिभाषा के दौरान वैकल्पिक रूप में एक या अधिक मापदंडों को चिह्नित करने पर विचार कर सकते हैं।

Step 3 - अंत में, आपको इसे क्रियाशील बनाने के लिए फ़ंक्शन को आमंत्रित करना होगा।

उदाहरण

आइए अब निम्नलिखित उदाहरण कोड पर एक नज़र डालते हैं -

function disp(s1:string):void; 
function disp(n1:number,s1:string):void; 

function disp(x:any,y?:any):void { 
   console.log(x); 
   console.log(y); 
} 
disp("abc") 
disp(1,"xyz");
  • पहली दो पंक्तियाँ फ़ंक्शन अधिभार घोषणा को दर्शाती हैं। समारोह में दो अधिभार हैं -

    • फ़ंक्शन जो एकल स्ट्रिंग पैरामीटर को स्वीकार करता है।

    • फ़ंक्शन जो क्रमशः प्रकार और स्ट्रिंग के दो मानों को स्वीकार करता है।

  • तीसरी पंक्ति फ़ंक्शन को परिभाषित करती है। डेटा प्रकार के पैरामीटर सेट हैंany। इसके अलावा, दूसरा पैरामीटर यहां वैकल्पिक है।

  • ओवरलोड किए गए फ़ंक्शन को अंतिम दो कथनों द्वारा लागू किया जाता है।

संकलन करने पर, यह जावास्क्रिप्ट कोड निम्नलिखित उत्पन्न करेगा -

//Generated by typescript 1.8.10
function disp(x, y) {
   console.log(x);
   console.log(y);
}
disp("abc");
disp(1, "xyz");

उपरोक्त कोड निम्नलिखित आउटपुट का उत्पादन करेगा -

abc 
1 
xyz