39 Fortgeschrittene Nutzung von Interfaces

Interfaces in TypeScript sind ein essentielles Werkzeug, um komplexe Strukturen und wiederverwendbare Typdefinitionen zu erstellen. Sie gehen weit über einfache Strukturdefinitionen hinaus und bieten umfangreiche Möglichkeiten zur Typisierung.

39.1 Komplexe Interface-Strukturen

Interfaces können verschachtelte Strukturen abbilden, was besonders nützlich ist, um komplexe Datenformate zu beschreiben:

interface Person {
  name: string;
  address: {
    street: string;
    city: string;
  };
  contacts: string[];
}

39.2 Methodensignaturen in Interfaces

Interfaces können auch Methodensignaturen definieren, inklusive optionaler und überladener Methoden:

interface Greeter {
  greet(name: string): string;
  greet(name: string, greeting: string): string;
}

39.3 Kombination von Interfaces

Interfaces können kombiniert werden, um komplexe Typen zu erstellen. Dies kann durch Erweiterung mehrerer Interfaces erreicht werden:

interface Person {
  name: string;
}

interface Worker {
  jobTitle: string;
}

interface Employee extends Person, Worker {
  employeeId: number;
}

39.4 Interfaces mit Funktionen

Interfaces können auch als Typen für Funktionen und deren Parameter verwendet werden:

interface StringTransformer {
  (input: string): string;
}

const capitalize: StringTransformer = (input) => input.toUpperCase();

39.5 Interfaces vs. Type Aliases

Während Interfaces und Type Aliases oft ähnlich verwendet werden können, gibt es wichtige Unterschiede. Interfaces sind erweiterbar und können mehrfach in einem Programm deklariert werden, wohingegen Type Aliases nicht erweitert oder dupliziert werden können.

39.6 Conditional Typing

Interfaces können in Verbindung mit bedingten Typen verwendet werden, um komplexe Typlogiken zu implementieren:

interface Response<T> {
  data: T;
  success: boolean;
}

type StringResponse = Response<string>;
type NumberResponse = Response<number>;

39.7 Best Practices

Bei der Verwendung von Interfaces sollten Sie Best Practices beachten: