Obtenir le nom de la classe dans TypeScript
- Classes et objets TypeScript
- Obtenir le type de l’objet TypeScript au moment de l’exécution
- Constructeur d’objet TypeScript
L’ancien JavaScript est plus axé sur la programmation fonctionnelle. Avec l’évolution de TypeScript, qui est le sur-ensemble de JavaScript, il a commencé à prendre en charge les fonctionnalités de programmation orientée objet.
La terminologie de base derrière la programmation orientée objet est qu’un programme se compose d’entités du monde réel qui interagissent.
Classes et objets TypeScript
TypeScript prend en charge la programmation orientée objet avec le concept de class
. Une classe est un plan d’une entité du monde réel qui est utilisée pour créer des instances de classe.
Les classes TypeScript ont été introduites à partir de l’ES6. Une classe se compose de champs, de méthodes et de constructeurs.
class Animal {
// properties/fields
name: string;
color: string;
// constructor
constructor(name: string) {
this.name = name;
}
// methods/functions
eat(): void {
console.log("I am eating");
}
}
Les champs sont définis pour stocker le nom et la couleur d’un objet Animal
. Un constructeur TypeScript est utilisé pour initialiser les propriétés de l’objet.
C’est une fonction spéciale qui peut être paramétrée, comme dans l’exemple ci-dessus.
Avec la classe Animal
en place, il est possible de créer des objets à partir de cela. TypeScript utilise le mot-clé new
pour créer de nouveaux objets à partir d’une classe donnée.
Comme TypeScript est un langage fortement typé, le type des nouvelles instances Animal
sera dans le type Animal
.
let dog: Animal = new Animal('rocky');
Comme vous pouvez le voir, le constructeur de la classe Animal
a été appelé lors de la création de l’instance Animal
. Le constructeur de la classe Animal
accepte un paramètre de chaîne, et nous avons dû le passer lors de la création de l’objet.
Obtenir le type de l’objet TypeScript au moment de l’exécution
Dans certains scénarios, vous devez connaître le type de l’objet TypeScript au moment de l’exécution. Supposons que nous ayons une classe appelée Vehicle
.
class Vehicle {
vehicleNo: string;
vehicleBrand: string
constructor(vehicleNo: string, vehicleBrand: string) {
this.vehicleNo = vehicleNo;
this.vehicleBrand = vehicleBrand;
}
}
Créons un nouvel objet Vehicle
, miniCar
.
let miniCar: Vehicle = new Vehicle('GH-123', 'AUDI');
La miniCar
est un objet Vehicle
, et son type est un Vehicle
. Nous pouvons vérifier le nom d’une classe spécifique en utilisant la propriété name
de cette classe.
Syntaxe:
<class_name>.name
Vérifions le nom de la classe Vehicle
.
console.log(Vehicle.name);
Production:
Vehicle
Constructeur d’objet TypeScript
Comme mentionné, chaque classe TypeScript consiste en un constructeur qui peut être un constructeur personnalisé écrit par le programmeur ou un constructeur par défaut. Il s’agit d’un type spécial de fonction TypeScript.
Ainsi, on peut obtenir une référence à la fonction constructor
d’un objet.
Syntaxe:
Object.constructor
Obtenons une référence au constructeur de l’objet miniCar
, comme illustré ci-dessous.
let miniCarConstructorRef: any = miniCar.constructor;
Ensuite, nous enregistrerons la valeur de la variable miniCarConstructorRef
dans la console.
[Function: Vehicle]
Comme prévu, il référence le constructeur de l’objet miniCar
.
TypeScript vous permet d’obtenir le nom du constructeur de l’objet à l’aide de la propriété name
.
Syntaxe:
Object.constructor.name
Utilisons la syntaxe ci-dessus pour obtenir le nom de classe de l’objet miniCar
.
let classNameOfTheObject = miniCarConstructorRef.name;
Enfin, nous enregistrerons la valeur de la variable classNameOfTheObject
dans la console.
console.log(classNameOfTheObject);
Production:
Vehicle
Il s’agit de la méthodologie recommandée pour vérifier la classe à laquelle appartient un objet.
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.