TypeScript Academy · Lektion

Grundlagen der Inversion of Control

Verstehen Sie, warum und wann Abhängigkeiten invertiert werden.

Lektion 1 von 413 Schritte

Grundlagen der Inversion of Control 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.

Fest codierte Abhängigkeiten

Wenn eine Klasse ihre eigenen Kollaborateure mit new erstellt, ist sie eng an diese konkreten Typen gekoppelt. Dadurch lässt sich die Klasse nur schwer neu konfigurieren und testen.

Ein Beispiel mit enger Kopplung

Hier erstellt der Service seinen eigenen Logger. Es gibt keine Möglichkeit, einen anderen Logger einzusetzen, ohne die Klasse zu bearbeiten.

class ConsoleLogger { log(m: string) { console.log(m); } }
class OrderService {
  private logger = new ConsoleLogger(); // hard-coded
  place() { this.logger.log("order placed"); }
}
new OrderService().place();

Was ist Inversion of Control?

Inversion of Control (IoC) kehrt die Zuständigkeit für Abhängigkeiten um. Statt dass eine Klasse sie erstellt, stellt etwas außerhalb der Klasse sie bereit. Die Klasse erklärt, was sie benötigt, und erhält es.

Dependency Injection

Dependency Injection (DI) ist die übliche Methode, IoC umzusetzen: Übergeben Sie Kollaborateure, statt sie intern zu erstellen. Der Aufrufer bestimmt, welche Implementierung verwendet wird.

Die injizierte Variante

Nun wird der Logger von außen bereitgestellt. Der Service weiß nicht mehr, welche konkrete Logger-Implementierung er erhalten hat, und muss sich darum auch nicht kümmern.

class OrderService {
  constructor(private logger: { log(m: string): void }) {}
  place() { this.logger.log("order placed"); }
}
new OrderService(new ConsoleLogger()).place();

Warum IoC die Testbarkeit verbessert

Da die Abhängigkeiten von außen kommen, können Tests Fakes oder Spies übergeben. So können Sie das Verhalten ohne echte Ein-/Ausgabe, Datenbanken oder Netzwerkaufrufe überprüfen.

const calls: string[] = [];
const fakeLogger = { log: (m: string) => calls.push(m) };
new OrderService(fakeLogger).place();
console.log(calls); // ["order placed"]

Abhängig von Abstraktionen

IoC funktioniert am besten, wenn Klassen von einem Interface statt von einer konkreten Klasse abhängen. Jede Implementierung, die das Interface erfüllt, kann injiziert werden.

interface Logger { log(m: string): void; }
class OrderService {
  constructor(private logger: Logger) {}
}

Constructor Injection

Constructor Injection übergibt Abhängigkeiten als Konstruktorparameter. Sie stehen sofort zur Verfügung und können als readonly markiert werden, wodurch sie klar definiert und erforderlich sind.

class OrderService {
  constructor(private readonly logger: Logger) {}
}

Property Injection

Property Injection setzt eine Abhängigkeit nach der Konstruktion über eine öffentliche oder setzbare Property. Das ist flexibler, ermöglicht aber, dass das Objekt vorübergehend ohne diese Abhängigkeit existiert.

class OrderService {
  logger!: Logger; // set after construction
  place() { this.logger.log("placed"); }
}
const s = new OrderService();
s.logger = new ConsoleLogger();

Eine Variante auswählen

Bevorzugen Sie Constructor Injection für erforderliche Abhängigkeiten, da sich das Objekt nie in einem halbfertigen Zustand befindet. Verwenden Sie Property Injection für optionale Kollaborateure oder um Konstruktionszyklen zu durchbrechen.

Vorschau auf IoC-Container

Bei großen Anwendungen wird es zunehmend mühsam, Abhängigkeiten von Hand zu verdrahten. Ein IoC-Container automatisiert das Erstellen und Bereitstellen von Abhängigkeiten. Die nächsten Lektionen zeigen dies mit InversifyJS.

Kurztest

Kurzer Test zu dieser Lektion.

Zusammenfassung

Inversion of Control verlagert die Erstellung von Abhängigkeiten aus der Klasse heraus; Dependency Injection stellt sie der Klasse bereit. Hängen Sie von Interfaces ab, bevorzugen Sie Constructor Injection für erforderliche Abhängigkeiten und ermöglichen Sie einfache Tests, indem Sie Fakes injizieren.

Kostenlos starten

Lerne TypeScript mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
101
Lektionen
352

Häufig gestellte Fragen

Ist die Lektion „Grundlagen der Inversion of Control“ kostenlos?

Ja — der vollständige Text von „Grundlagen der Inversion of Control“ 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 „Grundlagen der Inversion of Control“?

Verstehen Sie, warum und wann Abhängigkeiten invertiert werden. 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 „Grundlagen der Inversion of Control“?

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. Grundlagen der Inversion of Control
  2. Constructor Injection
  3. DI-Container mit InversifyJS
  4. Typsichere Service-Tokens
← Zurück zu TypeScript Academy