📚
Lerndokumentationen
Web
Web
  • Willkommen
  • HTML
    • Was ist HTML?
    • Elemente
    • Attribute
    • Boilerplate
  • Textelemente
  • Links
  • Dokumentenstruktur
  • Medien
  • Tabellen
  • Formulare
  • CSS
    • Was ist CSS?
    • Syntax
  • Einheiten
  • Selektoren
  • Boxmodell
  • Hintergründe und Rahmen
  • Overflow
  • Bilder
  • Formulare
  • Textelemente
  • Layout
    • Flexbox
    • Grid
  • Responsive Design
  • JavaScript
    • Was ist JavaScript?
    • Einbindung in HTML
    • Grundlagen
      • Variablen und Werte
      • Datentypen
      • Operatoren und Ausdrücke
      • Kontrollstrukturen
      • Schleifen
    • Funktionen
      • Funktionsdeklarationen vs. Funktionsausdrücke
      • Arrow Functions
      • Standardparameter und Rest-Parameter
      • First-Class und Higher-Order-Funktionen
      • Closures
      • IIFE (Immediately Invoked Function Expressions)
    • Arrays
      • Erstellen und Modifizieren
      • Iteration über Arrays
      • Sortieren
      • Nützliche Methoden
    • Objekte und Datenstrukturen
      • Erstellen und Manipulieren
      • Destructuring
      • Sets und Maps
    • Strings
      • Template Literals
      • Methoden
    • Moderne JavaScript-Features
      • Optionale Verkettung
      • Nullish Coalescing Operator
      • Spread und Rest Operator
      • Kurzschlussausdrücke
    • Scope und Kontext
      • this Keyword
      • Call, Apply und Bind
      • Hoisting und Temporal Dead Zone (TDZ)
    • Objektorientierte Programmierung
      • Prototypes
      • Constructor Functions
      • ES6 Classes
      • Die create()-Methode
    • Asynchronous JavaScript
      • AJAX
      • Promises
    • Zahlen, Daten, Internationalisierung und Timer
      • Mathematische Operationen
      • Datum und Zeit
      • Internationalisierung
      • Timer
    • Modules
    • JavaScript im Browser (DOM und Events)
      • Das DOM
      • Elemente auswählen, erstellen und manipulieren
      • Styles, Attribute und Klassen
      • Events und Event Listener
      • Event Propagation
        • Event Delegation
      • DOM Traversing
    • JavaScript Engine und Performance
      • Execution Context und Call Stack
  • TypeScript
    • Was ist TypeScript?
  • Compiler und Runtimes
  • Konfiguration
  • Types
    • Primitive Typen und Typableitung
    • Arrays und Tupel
    • Objekte
    • Top- und Bottom-Types
    • Enums
    • Utility Types
      • Records
  • Typenkombination
    • Union Types
    • Discriminated Unions
    • Intersections
  • Funktionen
  • Klassen
    • Grundlagen
    • Feldinitialisierer
    • Schreibgeschützte Felder
    • Implementieren
    • Private und Geschützte Member
    • Getter und Setter
    • Statische Member
    • Abstrakte Klassen und Member
  • Modules
    • Importieren und Exportieren
    • Ambient Types
    • Namespaces
    • Globals
  • React
    • Was ist React?
    • JSX
    • Komponenten
      • Root-Komponente
      • Styling
      • Listen
      • Conditional Rendering
      • Fragments
    • Props
      • Destructuring
      • Children
    • Interaktivität
      • Event Handling
      • State
      • Formulare
    • State Management
      • State anheben
      • Derived State
    • Komposition und Reusability
      • Komponentenstrukturierung
      • Prop Drilling
      • Komposition
Bereitgestellt von GitBook
Auf dieser Seite
  • Optionale Argumente
  • Overloading
  • Restparameter
  • this

Funktionen

In TypeScript kannst du die Typen der Funktionsparameter und Rückgabewerte deklarieren.

const add = (a: number, b: number): number => {
  return a + b;
}

Im obigen Beispiel nimmt die Funktion add zwei Parameter a und b, beide vom Typ number, und gibt einen Wert vom Typ number zurück. Der Rückgabetyp ist optional und kann von TypeScript abgeleitet werden.

const add = (a: number, b: number) => {
  return a + b;
}

Das Ergebnis ist immer noch eine Zahl, da TypeScript den Rückgabetyp aus der Rückgabeanweisung ableiten kann. TypeScript weiss, dass a und b Zahlen sind, also ist das Ergebnis der Addition auch eine Zahl. Es ist jedoch oft hilfreich, den Rückgabetyp explizit zu deklarieren, um die Lesbarkeit und Wartbarkeit zu verbessern.


Einige Funktionen geben nichts zurück. In diesem Fall kannst du den Rückgabetyp als void deklarieren.

const log = (message: string): void => {
  console.log(message);
}

Du kannst auch den Typ einer Funktionsvariablen deklarieren.

const multiply: (a: number, b: number) => number = (a, b) => {
  return a * b;
};

Im obigen Beispiel ist die Variable multiply als Funktion deklariert, die zwei Parameter vom Typ number annimmt und einen Wert vom Typ number zurückgibt. Die Funktion, die multiply zugewiesen ist, entspricht dieser Signatur.

Optionale Argumente

Was ist, wenn eine Funktion ein optionales Argument hat? Füge dem Namen des Arguments ein Fragezeichen ? hinzu, um es als optional zu kennzeichnen.

const greet = (name: string, greeting?: string): string => {
  if (greeting) {
    return `${greeting}, ${name}!`;
  } else {
    return `Hello, ${name}!`;
  }
}

Beachte, dass das Argument greeting als string oder undefined eingegeben wird. Das liegt daran, dass das Argument optional ist und weggelassen werden kann.

Overloading

Funktionsüberladungen sind eine Möglichkeit, mehrere Funktionssignaturen für denselben Funktionsnamen zu definieren. Dadurch hast du mehrere Möglichkeiten, eine Funktion aufzurufen, abhängig von den Argumenten, die du ihr übergibst.

const add: {
  (a: number, b: number): number;
  (a: string, b: string): string;
} = (a: any, b: any): any => a + b;

const sum = add(10, 20);
const concatenatedString = add("Hello, ", "world!");

Die Überladungen müssen oberhalb der Implementierung deklariert werden. Die Implementierung muss eine einzige Funktion sein, die mit allen Überladungssignaturen kompatibel ist.

Vermeide im Allgemeinen Funktionsüberladungen, wenn du kannst. Sie können dazu führen, dass dein Code schwieriger zu lesen und zu warten ist.

Restparameter

Restparameter sind eine Möglichkeit, eine unbestimmte Anzahl von Argumenten als Array darzustellen. Du kannst die ...-Syntax verwenden, um einen Restparameter zu deklarieren. Der Restparameter muss der letzte Parameter in der Funktionssignatur sein.

const sum = (...numbers: number[]): number =>
  numbers.reduce((total, n) => total + n, 0);

In diesem Beispiel akzeptiert die Funktion sum eine beliebige Anzahl von Argumenten und gibt die Summe aller Zahlen zurück. Der Parameter numbers ist ein Restparameter, der alle an die Funktion übergebenen Argumente in einem Array sammelt.

this

In JavaScript ist das Schlüsselwort this ein Verweis auf das Objekt, das die aktuelle Funktion ausführt.

TypeScript ist intelligent genug, um den Kontrollfluss zu analysieren und Autovervollständigung und Typsicherheit zu bieten, wenn this in einer Methode eines Objektliteral verwendet wird.

const person = {
  name: "Alice",
  sayHello() {
    console.log(`Hello, ${this.name}!`);
  },
};

Auch eine blosse Funktion kann einen solchen Kontext angeben. Wenn eine Funktion aufgerufen wird, wird der Wert von this dadurch bestimmt, wie die Funktion aufgerufen wird. In TypeScript kannst du den Typ von this in einer Funktion mit dem Schlüsselwort this an der Stelle deklarieren, an der du normalerweise den Parameter deklarieren würdest. Diese Syntax funktioniert, weil this in JS kein gültiger Parametername ist, sodass TypeScript das Schlüsselwort this hier sicher für Typzwecke verwenden kann.

const person = { name: "Alice" };

const sayHello = (this: { name: string }) => {
  console.log(`Hello, ${this.name}!`);
}

sayHello.call(person);
VorherigeIntersectionsNächsteKlassen

Zuletzt aktualisiert vor 17 Tagen

Im obigen Beispiel wird die Funktion sayHello mit einem this-Parameter deklariert, der ein Objekt mit einer name-Eigenschaft erwartet. Wenn die Funktion mit der aufgerufen wird, wird der this-Parameter auf das person-Objekt gesetzt, und die Funktion kann auf die name-Eigenschaft zugreifen.

call-Methode