Mot-clé implements dans TypeScript
Cet article explique le mot-clé implémente
de TypeScript.
Vérification de type TypeScript
TypeScript est un sur-ensemble de JavaScript qui inclut la vérification de type au moment de la compilation. La vérification de type au moment de la compilation se concentre principalement sur la question de savoir si une variable ou une valeur d’argument a la forme qu’elle est censée avoir.
Cette technique s’appelle le typage de canard dans TypeScript. À la suite du typage canard, le compilateur TypeScript vérifie si les deux objets sont identiques.
Il assure la sécurité du type dans un programme TypeScript.
La vérification de type vérifie si deux objets donnés contiennent les mêmes propriétés et méthodes. Sinon, le compilateur TypeScript générera une erreur.
Supposons que nous ayons trois classes TypeScript, comme illustré ci-dessous.
class Person {
gender: string;
}
class Employee {
gender: string;
empId: string;
}
class Manager {
gender: string;
empId: string;
}
Créons de nouveaux objets Person
et Employee
.
let person1: Person = new Person();
let employee1: Employee = new Employee();
Ce code sera compilé avec succès car il ne viole pas les règles de vérification de type.
Essayons d’affecter l’objet employee1
à une variable de type Person
.
let person2: Person = employee1;
La compilation s’est déroulée avec succès car l’objet employee1
a la forme de l’objet Person
. Comme les objets Person
ne doivent avoir qu’une seule propriété appelée gender
, elle est conforme à l’objet employee1
.
La propriété supplémentaire empId
est tout à fait correcte.
Essayons d’affecter l’objet person1
à la variable de type Employee
comme indiqué ci-dessous.
let employee2: Employee = person1;
Les règles de typage du canard TypeScript ne le permettent pas. Par conséquent, le compilateur TypeScript génère une erreur.
Habituellement, les interfaces TypeScript jouent le rôle de définir des types et des contrats dans le code TypeScript.
Interfaces TypeScript
Les interfaces TypeScript fournissent la forme de vos classes. Chaque fois qu’une classe TypeScript dérive d’une interface, elle doit implémenter la structure définie par l’interface.
C’est comme un contrat du monde réel; tant qu’une classe accepte l’interface, elle doit adhérer à la structure de l’interface. Les interfaces n’implémentent aucune logique métier.
Il déclare simplement les propriétés et les méthodes comme indiqué dans ce qui suit.
interface IVehicle {
vehicleNumber: string;
vehicleBrand: string;
vehicleCapacity: number;
getTheCurrentGear: () => number;
getFuelLevel(): string;
}
Les interfaces TypeScript peuvent être utilisées comme type, type de fonction, type de tableau, etc. Elles peuvent être utilisées comme contrat pour une classe, comme indiqué dans la section suivante.
La clause implements
en TypeScript
Le mot clé TypeScript implements
est utilisé pour implémenter une interface dans une classe. L’interface IVehicle
ne contient aucun détail au niveau de l’implémentation.
Ainsi, l’interface IVehicle
peut être implémentée par une nouvelle classe VipVehicle
.
class VipVehicle implements IVehicle {
}
La classe VipVehicle
vient à un contrat avec l’interface IVehicle
, comme indiqué dans l’exemple ci-dessus. Si vous compilez ce code TypeScript, il générera une erreur, comme illustré ci-dessous.
Le compilateur TypeScript se plaint que trois propriétés et deux méthodes n’ont pas été implémentées dans la classe VipVehicle
. Il est donc obligatoire de se conformer à la structure de l’interface IVehicle
.
Nous devrions ajouter trois propriétés et implémenter les deux méthodes en conséquence.
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
}
}
Si nous compilons à nouveau le code, il devrait être compilé avec succès.
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.