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.
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-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.
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.