TypeScript - Funktionen

Funktionen sind die Bausteine ​​für lesbaren, wartbaren und wiederverwendbaren Code. Eine Funktion ist eine Reihe von Anweisungen zum Ausführen einer bestimmten Aufgabe. Funktionen organisieren das Programm in logischen Codeblöcken. Einmal definiert, können Funktionen aufgerufen werden, um auf Code zuzugreifen. Dies macht den Code wiederverwendbar. Darüber hinaus erleichtern Funktionen das Lesen und Verwalten des Programmcodes.

Eine Funktionsdeklaration informiert den Compiler über den Namen, den Rückgabetyp und die Parameter einer Funktion. Eine Funktionsdefinition liefert den tatsächlichen Hauptteil der Funktion.

Sr.Nr. Funktionen & Beschreibung
1. Funktion definieren

Eine Funktionsdefinition gibt an, was und wie eine bestimmte Aufgabe ausgeführt werden soll.

2. Eine Funktion aufrufen

Eine Funktion muss aufgerufen werden, um sie auszuführen.

3. Rückgabe von Funktionen

Funktionen können zusammen mit der Steuerung auch einen Wert an den Anrufer zurückgeben.

4. Parametrierte Funktion

Parameter sind ein Mechanismus zum Übergeben von Werten an Funktionen.

Optionale Parameter

Optionale Parameter können verwendet werden, wenn Argumente für die Ausführung einer Funktion nicht zwangsweise übergeben werden müssen. Ein Parameter kann optional markiert werden, indem ein Fragezeichen an seinen Namen angehängt wird. Der optionale Parameter sollte als letztes Argument in einer Funktion festgelegt werden. Die Syntax zum Deklarieren einer Funktion mit optionalem Parameter lautet wie folgt:

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

Beispiel: Optionale Parameter

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]");
  • Das obige Beispiel deklariert eine parametrisierte Funktion. Hier ist der dritte Parameter, dh mail_id, ein optionaler Parameter.

  • Wenn einem optionalen Parameter während des Funktionsaufrufs kein Wert übergeben wird, wird der Wert des Parameters auf undefiniert gesetzt.

  • Die Funktion gibt den Wert von mail_id nur aus, wenn dem Argument ein Wert übergeben wird.

Beim Kompilieren wird folgender JavaScript-Code generiert:

//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]");

Der obige Code erzeugt die folgende Ausgabe -

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

Ruheparameter

Restparameter ähneln variablen Argumenten in Java. Ruheparameter beschränken nicht die Anzahl der Werte, die Sie an eine Funktion übergeben können. Die übergebenen Werte müssen jedoch alle vom gleichen Typ sein. Mit anderen Worten, Restparameter dienen als Platzhalter für mehrere Argumente desselben Typs.

Um einen Ruheparameter zu deklarieren, werden dem Parameternamen drei Punkte vorangestellt. Alle Nicht-Rest-Parameter sollten vor dem Rest-Parameter stehen.

Beispiel: Ruheparameter

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)
  • Die Deklaration der Funktion addNumbers () akzeptiert einen Restparameter nums . Der Datentyp des Rest-Parameters muss auf ein Array festgelegt werden. Darüber hinaus kann eine Funktion höchstens einen Ruheparameter haben.

  • Die Funktion wird zweimal aufgerufen, indem drei bzw. sechs Werte übergeben werden.

  • Die for-Schleife durchläuft die Argumentliste, wird an die Funktion übergeben und berechnet deren Summe.

Beim Kompilieren wird folgender JavaScript-Code generiert:

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);

Die Ausgabe des obigen Codes ist wie folgt:

sum of numbers 6 
sum of numbers 50

Standardparameter

Funktionsparametern können standardmäßig auch Werte zugewiesen werden. Solche Parameter können jedoch auch explizit übergeben werden.

Syntax

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

Note - Ein Parameter kann nicht gleichzeitig als optional und standardmäßig deklariert werden.

Beispiel: Standardparameter

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)

Beim Kompilieren wird folgender JavaScript-Code generiert:

//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);

Seine Ausgabe ist wie folgt -

Discount amount : 500 
Discount amount : 300
  • Das Beispiel deklariert die Funktion berechne_Diskont . Die Funktion hat zwei Parameter - Preis und Rate.

  • Der Wert des Parameters Rate wird eingestellt 0,50 voreingestellt.

  • Das Programm ruft die Funktion auf und übergibt ihr nur den Wert des Parameterpreises. Hier ist der Wert der Rate ist 0,50 (default)

  • Dieselbe Funktion wird aufgerufen, jedoch mit zwei Argumenten. Der Standardwert der Rate wird überschrieben und auf den explizit übergebenen Wert gesetzt.

Anonyme Funktion

Funktionen, die nicht an einen Bezeichner (Funktionsname) gebunden sind, werden als aufgerufen anonymous functions. Diese Funktionen werden zur Laufzeit dynamisch deklariert. Anonyme Funktionen können wie Standardfunktionen Ein- und Ausgänge akzeptieren. Auf eine anonyme Funktion kann nach ihrer erstmaligen Erstellung normalerweise nicht zugegriffen werden.

Variablen kann eine anonyme Funktion zugewiesen werden. Ein solcher Ausdruck wird Funktionsausdruck genannt.

Syntax

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

Beispiel ─ Eine einfache anonyme Funktion

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

Beim Kompilieren wird derselbe Code in JavaScript generiert.

Es wird die folgende Ausgabe erzeugt -

hello world

Beispiel ─ Anonyme Funktion mit Parametern

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

Die anonyme Funktion gibt das Produkt der an sie übergebenen Werte zurück.

Beim Kompilieren wird folgender JavaScript-Code generiert:

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

Die Ausgabe des obigen Codes ist wie folgt:

24

Funktionsausdruck und Funktionsdeklaration ─ Sind sie synonym?

Funktionsausdruck und Funktionsdeklaration sind nicht gleichbedeutend. Im Gegensatz zu einem Funktionsausdruck ist eine Funktionsdeklaration an den Funktionsnamen gebunden.

Der grundlegende Unterschied zwischen beiden besteht darin, dass Funktionsdeklarationen vor ihrer Ausführung analysiert werden. Andererseits werden Funktionsausdrücke nur analysiert, wenn die Skript-Engine während der Ausführung darauf stößt.

Wenn der JavaScript-Parser eine Funktion im Hauptcodefluss sieht, geht er von einer Funktionsdeklaration aus. Wenn eine Funktion Teil einer Anweisung ist, handelt es sich um einen Funktionsausdruck.

Der Funktionskonstruktor

TypeScript unterstützt auch das Definieren einer Funktion mit dem integrierten JavaScript-Konstruktor Function ().

Syntax

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

Beispiel

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

Die neue Funktion () ist ein Aufruf des Konstruktors, der wiederum eine Funktionsreferenz erstellt und zurückgibt.

Beim Kompilieren wird derselbe Code in JavaScript generiert.

Die Ausgabe des obigen Beispielcodes lautet wie folgt:

12

Rekursions- und TypeScript-Funktionen

Rekursion ist eine Technik zum Durchlaufen einer Operation, indem ein Funktionsaufruf wiederholt ausgeführt wird, bis ein Ergebnis erzielt wird. Die Rekursion wird am besten angewendet, wenn Sie dieselbe Funktion wiederholt mit unterschiedlichen Parametern innerhalb einer Schleife aufrufen müssen.

Beispiel - Rekursion

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

Beim Kompilieren wird derselbe Code in JavaScript generiert.

Hier ist seine Ausgabe -

720

Beispiel: Anonyme rekursive Funktion

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

Beim Kompilieren wird derselbe Code in JavaScript generiert.

Seine Ausgabe ist wie folgt -

Hello!!

Lambda-Funktionen

Lambda bezieht sich auf anonyme Funktionen in der Programmierung. Lambda-Funktionen sind ein prägnanter Mechanismus zur Darstellung anonymer Funktionen. Diese Funktionen werden auch als bezeichnetArrow functions.

Lambda-Funktion - Anatomie

Eine Lambda-Funktion besteht aus 3 Teilen -

  • Parameters - Eine Funktion kann optional Parameter haben

  • The fat arrow notation/lambda notation (=>) - Es wird auch als "Going to Operator" bezeichnet

  • Statements - den Befehlssatz der Funktion darstellen

Tip - Konventionell wird die Verwendung von Einzelbuchstabenparametern für eine kompakte und präzise Funktionsdeklaration empfohlen.

Lambda-Ausdruck

Es ist ein anonymer Funktionsausdruck, der auf eine einzelne Codezeile verweist. Die Syntax lautet wie folgt:

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

Beispiel: Lambda-Ausdruck

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

Das Programm deklariert eine Lambda-Ausdrucksfunktion. Die Funktion gibt die Summe von 10 und das übergebene Argument zurück.

Beim Kompilieren wird folgender JavaScript-Code generiert.

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

Hier ist die Ausgabe des obigen Codes -

110

Lambda-Erklärung

Die Lambda-Anweisung ist eine anonyme Funktionsdeklaration, die auf einen Codeblock verweist. Diese Syntax wird verwendet, wenn der Funktionskörper mehrere Zeilen umfasst. Die Syntax lautet wie folgt:

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

Beispiel: Lambda-Anweisung

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

Die Referenz der Funktion wird zurückgegeben und in der Variablen gespeichert foo.

Beim Kompilieren wird folgender JavaScript-Code generiert:

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

Die Ausgabe des obigen Programms ist wie folgt:

110

Syntaktische Variationen

Parametertyp Inferenz

Es ist nicht zwingend erforderlich, den Datentyp eines Parameters anzugeben. In diesem Fall ist der Datentyp des Parameters beliebig. Schauen wir uns das folgende Code-Snippet an:

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")

Beim Kompilieren wird der folgende JavaScript-Code generiert:

//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");

Seine Ausgabe ist wie folgt -

12 is numeric 
Tom is a string

Optionale Klammern für einen einzelnen Parameter

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

Beim Kompilieren wird folgender JavaScript-Code generiert:

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

Seine Ausgabe ist wie folgt -

The function got 12

Optionale Klammern für eine einzelne Anweisung, leere Klammern für keinen Parameter

Das folgende Beispiel zeigt diese beiden syntaktischen Variationen.

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

Beim Kompilieren wird folgender JavaScript-Code generiert:

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

Seine Ausgabe ist wie folgt -

Function invoked

Funktionsüberladungen

Funktionen können auf der Grundlage der ihnen zur Verfügung gestellten Eingaben unterschiedlich arbeiten. Mit anderen Worten, ein Programm kann mehrere Methoden mit demselben Namen und unterschiedlicher Implementierung haben. Dieser Mechanismus wird als Funktionsüberladung bezeichnet. TypeScript bietet Unterstützung für das Überladen von Funktionen.

Um eine Funktion in TypeScript zu überladen, müssen Sie die folgenden Schritte ausführen:

Step 1- Deklarieren Sie mehrere Funktionen mit demselben Namen, aber unterschiedlicher Funktionssignatur. Die Funktionssignatur umfasst Folgendes.

  • 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 - Die Funktionssignatur enthält nicht den Rückgabetyp der Funktion.

Step 2- Auf die Deklaration muss die Funktionsdefinition folgen. Die Parametertypen sollten auf eingestellt seinanywenn sich die Parametertypen bei Überlastung unterscheiden. Zusätzlich fürcase b Wenn Sie oben erläutert haben, können Sie einen oder mehrere Parameter während der Funktionsdefinition als optional markieren.

Step 3 - Schließlich müssen Sie die Funktion aufrufen, um sie funktionsfähig zu machen.

Beispiel

Schauen wir uns nun den folgenden Beispielcode an:

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");
  • Die ersten beiden Zeilen zeigen die Funktionsüberlastungsdeklaration. Die Funktion hat zwei Überladungen -

    • Funktion, die einen einzelnen Zeichenfolgenparameter akzeptiert.

    • Funktion, die zwei Werte vom Typ Nummer bzw. Zeichenfolge akzeptiert.

  • Die dritte Zeile definiert die Funktion. Der Datentyp der Parameter wird auf gesetztany. Darüber hinaus ist der zweite Parameter hier optional.

  • Die überladene Funktion wird von den letzten beiden Anweisungen aufgerufen.

Beim Kompilieren wird folgender JavaScript-Code generiert:

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

Der obige Code erzeugt die folgende Ausgabe -

abc 
1 
xyz