TypeScript - Classes: A Beginner's Guide
Bonjour là-bas, future superstar du codage ! ? Êtes-vous prêt à plonger dans le monde passionnant des classes TypeScript ? Ne vous inquiétez pas si vous n'avez jamais écrit une ligne de code auparavant - nous allons commencer de zéro et monter en compétence. D'ici la fin de ce tutoriel, vous serez capable de créer des classes comme un pro ! Alors, mettons-nous en route pour cette aventure ensemble.
Qu'est-ce que les Classes ?
Avant de rentrer dans les détails, comprenons ce qu'elles sont. Pensez à une classe comme un plan pour créer des objets. Comme les architectes utilisent des plans pour construire des maisons, nous utilisons des classes pour créer des objets dans notre code. Ces objets peuvent avoir des propriétés (comme la couleur d'une maison) et des méthodes (comme ouvrir une porte).
Création de Classes
Commençons par créer notre première classe. Nous allons créer une simple classe Car
.
class Car {
make: string;
model: string;
year: number;
constructor(make: string, model: string, year: number) {
this.make = make;
this.model = model;
this.year = year;
}
honk() {
console.log("Beep beep !");
}
}
Reprenons cela :
- Nous commençons avec le mot-clé
class
suivi du nom de notre classe,Car
. - À l'intérieur de la classe, nous définissons des propriétés :
make
,model
, etyear
. - Le constructeur est une méthode spéciale qui est appelée lorsque nous créons un nouvel objet
Car
. Il configure les valeurs initiales pour nos propriétés. - Nous avons également une méthode
honk
qui, lorsqu'elle est appelée, affiche "Beep beep !" dans la console.
Création d'Objets d'Instance
Maintenant que nous avons notre classe Car
, créons quelques objets de voiture réels !
let myCar = new Car("Toyota", "Corolla", 2020);
let yourCar = new Car("Honda", "Civic", 2019);
Ici, nous avons créé deux objets Car
: myCar
et yourCar
. Le mot-clé new
indique à TypeScript de créer une nouvelle instance de notre classe Car
.
Accès aux Attributs et Fonctions
Maintenant que nous avons nos objets de voiture, comment les utilisons-nous ? Voyons voir :
console.log(myCar.make); // Affiche : Toyota
console.log(yourCar.year); // Affiche : 2019
myCar.honk(); // Affiche : Beep beep !
Nous utilisons la notation pointée pour accéder aux propriétés et méthodes de nos objets. C'est comme dire : "Hé, myCar ! Quelle est ta marque ?" ou "Hé, myCar ! Donne-nous un coup de klaxon !"
Héritage de Classe
L'héritage est une fonctionnalité puissante qui nous permet de créer de nouvelles classes basées sur des classes existantes. Créons une classe SportsCar
qui hérite de notre classe Car
:
class SportsCar extends Car {
topSpeed: number;
constructor(make: string, model: string, year: number, topSpeed: number) {
super(make, model, year);
this.topSpeed = topSpeed;
}
race() {
console.log(`Racing at ${this.topSpeed} mph !`);
}
}
let mySpeedster = new SportsCar("Ferrari", "F8", 2021, 210);
mySpeedster.honk(); // Affiche : Beep beep !
mySpeedster.race(); // Affiche : Racing at 210 mph !
Voici ce qui se passe :
- Nous utilisons le mot-clé
extends
pour hériter deCar
. - Nous ajoutons une nouvelle propriété
topSpeed
. - Dans le constructeur, nous appelons
super()
pour initialiser les propriétés de la classe parente. - Nous ajoutons une nouvelle méthode
race
spécifique àSportsCar
.
Notre SportsCar
a toutes les propriétés et méthodes de Car
, plus ses propres ajouts !
Remplacement de Méthode
Parfois, nous voulons changer la manière dont une méthode de la classe parente fonctionne dans notre classe enfant. Cela s'appelle le remplacement de méthode. Remplaçons la méthode honk
dans notre SportsCar
:
class SportsCar extends Car {
// ... code précédent ...
honk() {
console.log("Vroom vroom !");
}
}
mySpeedster.honk(); // Affiche : Vroom vroom !
Maintenant, lorsque nous appelons honk()
sur un SportsCar
, il émet un son plus sportif !
Le Mot-clé static
Le mot-clé static
nous permet de créer des propriétés et des méthodes qui appartiennent à la classe elle-même, et non pas aux instances de la classe. Ajoutons une méthode statique à notre classe Car
:
class Car {
// ... code précédent ...
static numberOfWheels() {
return 4;
}
}
console.log(Car.numberOfWheels()); // Affiche : 4
Nous pouvons appeler cette méthode sur la classe Car
elle-même, sans créer une instance.
L'Opérateur instanceof
L'opérateur instanceof
nous permet de vérifier si un objet est une instance d'une classe particulière :
console.log(myCar instanceof Car); // Affiche : true
console.log(mySpeedster instanceof SportsCar); // Affiche : true
console.log(mySpeedster instanceof Car); // Affiche : true
console.log(myCar instanceof SportsCar); // Affiche : false
Cela est utile lorsque vous avez besoin de vérifier avec quel type d'objet vous traitez.
Masquage des Données
En TypeScript, nous pouvons utiliser des modificateurs d'accès pour contrôler la visibilité des membres de la classe. Les trois modificateurs d'accès sont public
, private
, et protected
:
class BankAccount {
private balance: number;
constructor(initialBalance: number) {
this.balance = initialBalance;
}
public deposit(amount: number) {
this.balance += amount;
}
public withdraw(amount: number) {
if (amount <= this.balance) {
this.balance -= amount;
} else {
console.log("Fonds insuffisants !");
}
}
protected getBalance() {
return this.balance;
}
}
-
private
: Accessible uniquement à l'intérieur de la classe. -
public
: Accessible depuis n'importe où (par défaut si non spécifié). -
protected
: Accessible à l'intérieur de la classe et de ses sous-classes.
Classes et Interfaces
Les interfaces en TypeScript nous permettent de définir un contrat pour nos classes. Créons une interface pour notre classe Car
:
interface Vehicle {
make: string;
model: string;
year: number;
honk(): void;
}
class Car implements Vehicle {
// ... implémentation ...
}
En implémentant une interface, nous nous assurons que notre classe suit une structure spécifique.
Résumé des Méthodes
Voici un résumé des méthodes que nous avons couvertes dans ce tutoriel :
Méthode | Description |
---|---|
constructor() |
Initialise une nouvelle instance d'une classe |
honk() |
Fait klaxonner la voiture |
race() |
Simule une course (pour SportsCar ) |
static numberOfWheels() |
Retourne le nombre de roues (pour la classe Car ) |
deposit() |
Ajoute de l'argent à un compte bancaire |
withdraw() |
Retire de l'argent d'un compte bancaire |
getBalance() |
Retourne le solde actuel d'un compte bancaire |
Et voilà ! Vous avez fait vos premiers pas dans le monde des classes TypeScript. Souvenez-vous, la pratique rend parfait, alors n'ayez pas peur d'expérimenter avec ces concepts. Créez vos propres classes, combinez différentes fonctionnalités, et surtout, amusez-vous à coder ! Qui sait, peut-être serez-vous celui qui enseignera cette classe la prochaine fois ! ?
Credits: Image by storyset