Schnittstelle vs. Klasse in TypeScript

Shuvayan Ghosh Dastidar 30 Januar 2023
  1. Unterschiede zwischen Klassen und Schnittstellen in TypeScript
  2. Wann Klassen vs. Schnittstellen in TypeScript verwendet werden sollten
Schnittstelle vs. Klasse in TypeScript

TypeScript ist eine stark typisierte Sprache und unterstützt komplexe und primitive Typen. Es ist eine Obermenge der JavaScript-Programmiersprache und verfügt daher auch über die verschiedenen Funktionen von JavaScript, wie z. B. Konzepte der objektorientierten Programmierung (OOP) und Konzepte der funktionalen Programmierung.

TypeScript wird für Organisationen mit großen Codebasen äußerst nützlich. TypeScript hilft, Laufzeitfehler zu vermeiden, die im Fall von JavaScript für falsch abgeleitete Typen unvermeidlich wären.

Geeignete Tools und IDEs, die TypeScript unterstützen, können Codevervollständigungen vorschlagen, Fehler in Typen erkennen, Fehler automatisch beheben und vieles mehr über verschiedene Schnittstellen, die vom Benutzer oder durch vom TypeScript-Compiler abgeleitete Typen definiert werden.

Dieses Tutorial konzentriert sich auf die Unterschiede zwischen Klassen und Schnittstellen und zeigt, wann welche verwendet werden sollten, um einige Daten zu modellieren.

Unterschiede zwischen Klassen und Schnittstellen in TypeScript

Klassen sind im Wesentlichen erforderlich, um die Implementierung verschiedener Objekte mit unterschiedlichen Eigenschaften und ihnen zugeordneten Methoden zu halten. Klassen können initialisierte Eigenschaften und Implementierungen verschiedener Methoden in sich haben und können verwendet werden, um verschiedene Objekte zu initialisieren oder zu erstellen.

Schnittstellen werden nur zum Halten der Typinformationen verschiedener Attribute verwendet, die einem Objekt entsprechen. Es wird im Allgemeinen zur Typprüfung und damit zur Vermeidung von Laufzeitfehlern verwendet und kann nicht zur Objektinstanziierung verwendet werden.

class Animal {
    name : string;
    eyes : number;

    constructor( name : string, eyes : number) {
        this.name = name;
        this.eyes = eyes;
    }

    getName() : string {
        return this.name;
    }

    getEyes() : number {
        return this.eyes;
    }
}

Der obige Codeblock zeigt die Implementierung einer TypeScript-Klasse, die die Blaupause der verschiedenen Attribute enthält, die der Klasse Animal zugeordnet sind, und über einige Methoden verfügt. Die gleichen Daten können über eine Schnittstelle modelliert werden.

interface Animal {
    name : string;
    eyes : number;

    getName : () => string;
    getEyes : () => number;
}

Somit hat es gemäß der Schnittstelle alle Möglichkeiten der Typprüfung für jedes Objekt, das die Schnittstelle implementiert, aber im Gegensatz zu Klassen hat es keine Möglichkeit, die Eigenschaften einer Klasse zu initialisieren, und kann keine Implementierung für die Funktionen in einer Klasse haben.

Wann Klassen vs. Schnittstellen in TypeScript verwendet werden sollten

Klassen werden als Objekt-Blaupause verwendet, die Standardwerte, unterschiedliche Methodenimplementierungen oder die Verwendung des Schlüsselworts new enthält, um verschiedene Instanzen derselben Klasse zu erstellen. Darüber hinaus nimmt der Code bei Klassen zur Laufzeit Platz ein, im Gegensatz zu Schnittstellen, die vom TypeScript-Compiler entfernt werden.

Klassen haben Konstruktoren zum Hinzufügen von Initialisierungscode und zum Initialisieren von Datenvariablen in der Klasse, im Gegensatz zu den Schnittstellen.

Daher werden Klassen verwendet, um einige komplexe Datenmodelle darzustellen, deren Objekte möglicherweise erstellt und häufig erweitert werden müssen und denen möglicherweise eine Initialisierungslogik zugeordnet werden muss.

In der Zwischenzeit werden Schnittstellen verwendet, um eine einfache Datenmodellierung zu haben, die nur aus den Typen der Attribute besteht, die einem Objekt zugeordnet sind.

Sie können auch als Datenschnittstelle einiger Klassen fungieren, sagen wir Klasse Tiger implementiert Animal– die Klasse Tiger wird die gesamte Typprüfungsunterstützung mit denselben Attributen wie in der Schnittstelle Animal haben.

Shuvayan Ghosh Dastidar avatar Shuvayan Ghosh Dastidar avatar

Shuvayan is a professional software developer with an avid interest in all kinds of technology and programming languages. He loves all kinds of problem solving and writing about his experiences.

LinkedIn Website

Verwandter Artikel - TypeScript Class

Verwandter Artikel - TypeScript Interface