0Pricing
TypeScript Academy · Lektion

Reine Funktionen und Unveränderlichkeit

Schreiben Sie vorhersehbare Funktionen ohne Seiteneffekte.

Reine Funktionen und Unveränderlichkeit ist eine kostenlose TypeScript Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des TypeScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der TypeScript Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist eine reine Funktion?

Eine reine Funktion liefert für dieselbe Eingabe dasselbe Ergebnis und hat keine Seiteneffekte. Sie liest oder schreibt keinen externen Zustand, verändert ihre Argumente nicht und führt keine Ein-/Ausgabe durch.

Ein reines Beispiel

Diese Funktion hängt nur von ihren Argumenten ab und erzeugt ausschließlich einen Rückgabewert. Ihr Aufruf verändert niemals etwas außerhalb der Funktion.

function add(a: number, b: number): number {
  return a + b;
}
console.log(add(2, 3)); // 5, always

Ein unreines Beispiel

Diese Funktion liest und verändert eine Variable außerhalb ihres Gültigkeitsbereichs. Ihr Ergebnis hängt daher vom verborgenen Zustand ab, und sie hinterlässt Spuren. Dadurch ist sie nicht rein.

let counter = 0;
function next(): number {
  counter += 1; // side effect
  return counter;
}
console.log(next(), next()); // 1 2, depends on history

Referenzielle Transparenz

Ein reiner Aufruf ist referenziell transparent: Sie können den Aufruf durch sein Ergebnis ersetzen, ohne das Programm zu verändern. add(2, 3) kann überall durch 5 ersetzt werden.

const x = add(2, 3) * 2;
const y = 5 * 2; // identical meaning
console.log(x === y); // true

Warum Reinheit hilft

Reine Funktionen lassen sich leicht testen (ohne Vorbereitung), einfach zwischenspeichern, sicher parallel ausführen und leicht nachvollziehen, da sie keine verborgenen Abhängigkeiten haben.

Argumente nicht verändern

Das Verändern eines Eingabe-Arrays oder -Objekts ist ein Seiteneffekt, den der Aufrufer möglicherweise nicht erwartet. Erstellen und geben Sie stattdessen einen neuen Wert zurück.

// Impure: mutates input
function pushImpure(xs: number[], v: number) { xs.push(v); return xs; }
// Pure: returns a new array
function pushPure(xs: number[], v: number): number[] { return [...xs, v]; }

Unveränderliche Aktualisierungen mit Spread

Der Spread-Operator kopiert ein Objekt oder Array, sodass Sie Felder überschreiben können, ohne das Original anzutasten. Er ist das zentrale Werkzeug für unveränderliche Aktualisierungen in TS.

interface User { name: string; age: number }
function birthday(u: User): User {
  return { ...u, age: u.age + 1 };
}
const before = { name: "Ada", age: 30 };
const after = birthday(before);
console.log(before.age, after.age); // 30 31

Arrays unveränderlich aktualisieren

Verwenden Sie map, filter und Spread, um neue Arrays abzuleiten, statt sie zu verändern. Das ursprüngliche Array bleibt für anderen Code unverändert erhalten.

const nums = [1, 2, 3];
const doubled = nums.map(n => n * 2);
console.log(nums, doubled); // [1,2,3] [2,4,6]

readonly für mehr Sicherheit

Die Kennzeichnung von Parametern mit readonly teilt dem Compiler (und den Lesern) mit, dass die Funktion sie nicht verändern wird, und stärkt die Reinheit auf Typebene.

function sum(xs: readonly number[]): number {
  return xs.reduce((a, b) => a + b, 0);
}
console.log(sum([1, 2, 3])); // 6

Effekte an die Ränder verlagern

Reale Programme benötigen Effekte (Protokollierung, Netzwerkzugriffe). Der funktionale Stil hält den Kern rein und isoliert Effekte an den Grenzen, sodass der Großteil des Codes vorhersehbar bleibt.

Mentale Checkliste

Fragen Sie sich bei jeder Funktion: Hängt sie nur von ihren Eingaben ab? Gibt sie ausschließlich einen Wert zurück? Lässt sie Eingaben und Außenwelt unverändert? Drei Ja bedeuten, dass sie rein ist.

Kurztest

Kurzer Test zu dieser Lektion.

Zusammenfassung

Reine Funktionen hängen nur von Eingaben ab und erzeugen keine Seiteneffekte, wodurch referenzielle Transparenz entsteht. Verwenden Sie Spread, map/filter und readonly für unveränderliche Aktualisierungen und verlagern Sie Effekte der realen Welt an die Ränder des Programms.

Häufig gestellte Fragen

Ist die Lektion „Reine Funktionen und Unveränderlichkeit“ kostenlos?

Ja — der vollständige Text von „Reine Funktionen und Unveränderlichkeit“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des TypeScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der TypeScript Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Reine Funktionen und Unveränderlichkeit“?

Schreiben Sie vorhersehbare Funktionen ohne Seiteneffekte. Du übst TypeScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um TypeScript Academy zu starten?

Keine Vorkenntnisse erforderlich. TypeScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Reine Funktionen und Unveränderlichkeit“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser TypeScript Academy-Lektion Code schreiben und ausführen?

Ja. Jede TypeScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Reine Funktionen und Unveränderlichkeit
  2. Currying und partielle Anwendung
  3. Funktionskomposition mit Typen
  4. Typisierte pipe- und flow-Utilities
← Zurück zu TypeScript Academy