Schlüsselwort implements in TypeScript

Migel Hewage Nimesha 15 Februar 2024
  1. TypeScript-Typprüfung
  2. TypeScript-Schnittstellen
  3. die implements-Klausel in TypeScript
Schlüsselwort implements in TypeScript

Dieser Artikel erklärt das TypeScript-Schlüsselwort implements.

TypeScript-Typprüfung

TypeScript ist eine Obermenge von JavaScript, die eine Typprüfung zur Kompilierzeit enthält. Die Typüberprüfung zur Kompilierzeit konzentriert sich hauptsächlich darauf, ob eine Variable oder ein Argumentwert die Form hat, die er haben soll.

Diese Technik wird in TypeScript Duck Typing genannt. Als Ergebnis des Ententippens prüft der TypeScript-Compiler, ob die beiden Objekte identisch sind.

Es gewährleistet die Typsicherheit in einem TypeScript-Programm.

Die Typprüfung prüft, ob zwei gegebene Objekte die gleichen Eigenschaften und Methoden enthalten. Wenn nicht, gibt der TypeScript-Compiler einen Fehler aus.

Nehmen wir an, wir haben drei TypeScript-Klassen, wie im Folgenden gezeigt.

class Person {
    gender: string;
}

class Employee {
    gender: string;
    empId: string;
}

class Manager {
    gender: string;
    empId: string;
}

Lassen Sie uns neue Person- und Employee-Objekte erstellen.

let person1: Person = new Person();
let employee1: Employee = new Employee();

Dieser Code wird erfolgreich kompiliert, da er nicht gegen die Typprüfungsregeln verstößt.

Versuchen wir, das Objekt employee1 einer Variablen vom Typ Person zuzuweisen.

let person2: Person = employee1;

Es wurde erfolgreich kompiliert, da das Objekt employee1 die Objektform Person hat. Da die Person-Objekte nur eine Eigenschaft namens gender haben sollen, entspricht sie dem employee1-Objekt.

Das zusätzliche Property empId ist völlig in Ordnung.

Versuchen wir, das Objekt person1 der Variablen vom Typ Employee zuzuweisen, wie im Folgenden gezeigt.

let employee2: Employee = person1;

Die TypeScript-Duck-Typing-Regeln lassen dies nicht zu. Daher löst der TypeScript-Compiler einen Fehler aus.

TypeScript-Compilerfehler

Normalerweise spielen die TypeScript-Schnittstellen die Rolle, Typen und Verträge in TypeScript-Code zu definieren.

TypeScript-Schnittstellen

TypeScript-Schnittstellen stellen die Form für Ihre Klassen bereit. Immer wenn eine TypeScript-Klasse von einer Schnittstelle abgeleitet wird, muss sie die durch die Schnittstelle definierte Struktur implementieren.

Es ist wie ein echter Vertrag; Solange eine Klasse die Schnittstelle akzeptiert, sollte sie sich an die Schnittstellenstruktur halten. Schnittstellen implementieren keine Geschäftslogik.

Es deklariert nur die Eigenschaften und Methoden, wie im Folgenden gezeigt.

interface IVehicle {
    vehicleNumber: string;
    vehicleBrand: string;
    vehicleCapacity: number;
    getTheCurrentGear: () => number;
    getFuelLevel(): string;
}

Die TypeScript-Schnittstellen können als Typ, Funktionstyp, Array-Typ usw. verwendet werden. Sie können als Vertrag für eine Klasse verwendet werden, wie im folgenden Abschnitt erläutert.

die implements-Klausel in TypeScript

Das TypeScript-Schlüsselwort implements wird verwendet, um eine Schnittstelle innerhalb einer Klasse zu implementieren. Die Schnittstelle IVehicle enthält keine Details auf Implementierungsebene.

Somit kann die IVehicle-Schnittstelle durch eine neue VipVehicle-Klasse implementiert werden.

class VipVehicle implements IVehicle {

}

Die Klasse VipVehicle kommt mit der Schnittstelle IVehicle in einen Vertrag, wie im obigen Beispiel gezeigt. Wenn Sie diesen TypeScript-Code kompilieren, wird ein Fehler ausgelöst, wie im Folgenden gezeigt.

TypeScript-Compilerfehler bei der Verwendung von Implements

TypeScript-Compiler bemängelt, dass drei Eigenschaften und zwei Methoden nicht innerhalb der Klasse VipVehicle implementiert wurden. Daher ist die Struktur der Schnittstelle IVehicle zwingend einzuhalten.

Wir sollten drei Eigenschaften hinzufügen und die beiden Methoden entsprechend implementieren.

class VipVehicle implements IVehicle {
    vehicleNumber: string;
    vehicleBrand: string;
    vehicleCapacity: number;

    getTheCurrentGear():number {
        return 3; // dummy numebr returning here for demo purposes
    }

    getFuelLevel():string {
        return 'full'; // dummy string returning here for demo purposes
    }

}

Wenn wir den Code erneut kompilieren, sollte er erfolgreich kompiliert werden.

TypeScript-Compiler erfolgreich bei der Verwendung von Implements

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.