0% ont trouvé ce document utile (0 vote)
9 vues81 pages

Introduction à TypeScript pour Développeurs

Le chapitre 4 présente TypeScript, un langage développé par Microsoft pour améliorer la robustesse et la maintenabilité du code JavaScript. Il aborde ses caractéristiques, avantages, et cas d'utilisation, ainsi que des comparaisons avec JavaScript. Le document fournit également des exemples pratiques de syntaxe et d'utilisation de TypeScript dans le développement web.

Transféré par

touilyasser7
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
9 vues81 pages

Introduction à TypeScript pour Développeurs

Le chapitre 4 présente TypeScript, un langage développé par Microsoft pour améliorer la robustesse et la maintenabilité du code JavaScript. Il aborde ses caractéristiques, avantages, et cas d'utilisation, ainsi que des comparaisons avec JavaScript. Le document fournit également des exemples pratiques de syntaxe et d'utilisation de TypeScript dans le développement web.

Transféré par

touilyasser7
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Developpement Web

Chapitre 4: Introduction à TypeScript

M. Mohammed BELATAR
[Link]@[Link]
avec Mme. FZ MOUTAI et M. YF EBOBISSE

3ème Année Ingénierie en Informatique et Réseaux

28 décembre 2024

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 1 / 81


Sommaire

1. Introduction à TypeScript
Origine de TypeScript
Caractéristiques de TypeScript
Adoption de TypeScript
Comparaison TypeScript vs JavaScript
Différences de syntaxe entre TypeScript et JavaScript
Avantages de TypeScript
Cas d’utilisation
Technologies et Frameworks basés sur TypeScript

2. Syntaxe et principes de base de TypeScript

3. Avantages de TypeScript par rapport à JavaScript

4. Utilisation des types personnalisés, interfaces et génériques


M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 2 / 81
Origine de TypeScript

Développé par Microsoft et lancé en 2012.


Contexte : Besoin d’un langage pour le développement à grande
échelle avec JavaScript.
Inspiration :
Influence de langages comme Java et C# pour la gestion des types.
Objectif : Améliorer la robustesse et la maintenabilité du code.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 3 / 81


Caractéristiques de TypeScript

Typage Statique : Détection des erreurs avant l’exécution.


Exemples de types de base : number, string, boolean.
Interfaces et Classes : Support de la programmation orientée objet.
Exemples : Création d’une interface pour un utilisateur.
Compatibilité : Tout JavaScript valide est également TypeScript.
Compilation : Conversion en JavaScript standard.
Exemples : Configuration pour cibler différentes versions de JavaScript.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 4 / 81


Adoption de TypeScript

Utilisé par des entreprises comme Google (Angular), Slack, et Airbnb.


Intégration dans les principaux frameworks front-end et back-end.
Écosystème :
Outils : Visual Studio Code, Prettier...
Bibliothèques typées (ex. : DefinitelyTyped).

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 5 / 81


Comparaison TypeScript vs JavaScript

Caractéristique JavaScript TypeScript


Typage Dynamique Statique (peut être dyna-
mique)
Détection des er- À l’exécution À la compilation
reurs
Syntaxe Flexible, permissive Plus stricte, inclut des types
Interfaces Non supporté Supporté, facilite la struc-
turation
Génériques Non supporté Supporté, permet des fonc-
tions et classes flexibles
Compilabilité Pas de compilation Doit être compilé en JavaS-
cript
Mise à jour du code Risque d’erreurs non détec- Révisions plus sûres avec
tées typage

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 6 / 81


Différences de syntaxe entre TypeScript et JavaScript

Fonctions
JavaScript :
function greet(name){ return "Hello " + name; }
TypeScript :
function greet(name: string): string {
return `Hello ${name} `;
}

Interfaces
JavaScript :
// Pas d’interface native.
TypeScript :
interface Person { name: string; age: number; }

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 7 / 81


Avantages de TypeScript

Sécurité des Types : Réduit les erreurs grâce à la vérification


statique.
Outils de Développement : Intellisense, suggestions de code,
refactoring.
Facilité de Maintenance : Code mieux structuré et plus lisible.
Interopérabilité : TypeScript fonctionne avec les bibliothèques
JavaScript existantes.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 8 / 81


Cas d’utilisation

Projets à Grande Échelle : Exemples d’applications complexes (ex. :


applications d’entreprise).
Travail en Équipe : Comment TypeScript facilite la collaboration.
Migration de Projets : Avantages d’introduire TypeScript dans un
projet JavaScript existant.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 9 / 81


Résumé

TypeScript améliore la qualité du code JavaScript.


Favorise une meilleure organisation et maintenabilité.
Encourage les bonnes pratiques de développement.
Discussion : Quel aspect de TypeScript vous intéresse le plus jusqu’à
présent ?

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 10 / 81


Frameworks Front-End populaires basés sur TypeScript

Angular :
Développé par Google, Angular est entièrement écrit en TypeScript.
Utilisé pour créer des applications web complexes à grande échelle.
Supporte la programmation orientée objet et le typage statique.
React :
Bien que React soit écrit en JavaScript, TypeScript est largement
utilisé avec React pour des applications robustes.
Facilite le typage des props, des états, et des composants fonctionnels.
Améliore la sécurité du code dans les grandes applications.
[Link] :
Vue 3 a introduit un support natif pour TypeScript.
Améliore la maintenabilité et la lisibilité des projets Vue à grande
échelle.
Utilisé pour des interfaces utilisateur interactives et performantes.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 11 / 81


Frameworks back-end populaires basés sur TypeScript
[Link] avec TypeScript :
TypeScript est largement utilisé pour développer des applications
[Link], apportant le typage statique côté serveur.
Améliore la lisibilité du code et facilite le débogage des applications
back-end.
NestJS :
Inspiré par Angular, NestJS est un framework back-end basé sur
TypeScript.
Conçu pour créer des applications server-side évolutives et modulaires.
Supporte les paradigmes de programmation orientée objet,
fonctionnelle, et réactive.
Deno :
Nouveau runtime pour JavaScript et TypeScript, créé par l’auteur de
[Link].
Intègre le support TypeScript de manière native, sans besoin de
configuration supplémentaire.
Orienté vers la sécurité et la simplicité par rapport à [Link].
M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 12 / 81
Sommaire

1. Introduction à TypeScript

2. Syntaxe et principes de base de TypeScript


Écrire et exécuter du code TypeScript (Front-End)
Déclaration de variables
Types primitifs
Les tableaux en TypeScript
Types unions et any
Types unions
Fonctions avec typage
Fonctions anonymes
Fonctions fléchées
Paramètres optionnels

3. Avantages de TypeScript par rapport à JavaScript


M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 13 / 81
Introduction : Utiliser TypeScript pour le Front-End

TypeScript est utilisé pour écrire du code plus robuste en front-end.


Pas besoin de [Link] pour exécuter du TypeScript dans le navigateur.
Recommandé : Visual Studio Code comme éditeur.
Pourquoi utiliser VS Code ?
Autocomplétion intelligente avec Intellisense.
Terminal intégré pour compiler du TypeScript.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 14 / 81


Installation de TypeScript

Installer TypeScript via npm (nécessite d’abord d’installer [Link]).


Télécharger [Link] ici : [Link]
Commande pour installer TypeScript globalement :
Commande
npm install -g typescript

Vérifiez l’installation avec :


Commande
tsc --version

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 15 / 81


Écrire du code TypeScript

Les fichiers TypeScript ont l’extension .ts.


Exemple de fichier TypeScript ([Link]) :

Exemple de Code
let message: string = "Bonjour TypeScript!";
[Link](message);

Ce fichier sera compilé en JavaScript pour être utilisé dans le


navigateur.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 16 / 81


Compiler du TypeScript en JavaScript

Utiliser la commande suivante pour compiler le fichier TypeScript :


Commande
tsc [Link]

Résultat : Un fichier [Link] est généré.


Inclure le fichier généré dans votre page HTML pour l’exécuter dans le
navigateur.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 17 / 81


Intégrer le fichier JavaScript dans une Page HTML

Exemple d’intégration :

Exemple HTML
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>TypeScript Front-End</title>
<script src="[Link]" defer></script>
</head>
<body>
<h1>Bienvenue dans TypeScript</h1>
</body>
</html>

Résultat : Affiche "Bonjour TypeScript !" dans la console du navigateur.


M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 18 / 81
Compilation automatique avec tsc --watch

Utilisez le mode tsc --watch pour compiler automatiquement lors


des modifications.
Commande
tsc [Link] --watch

Utile pour un flux de développement fluide.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 19 / 81


Utilisation de [Link]
Utilisez un fichier [Link] pour configurer votre projet
TypeScript.
Créez-le avec la commande :
Commande
tsc --init
Exemple de configuration :

Exemple de [Link]
{
"compilerOptions": {
"target": "es6",
"outDir": "./dist",
"strict": true
}
}
M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 20 / 81
Déclaration de variables

Utilisation des mots-clés : let, const, var.


let et const ont une portée limitée au bloc.
var a une portée globale ou fonctionnelle (à éviter).
Préférez let pour les variables modifiables et const pour les
constantes.

Exemple
let age: number = 30;
const PI: number = 3.14159;
var user: string = "Aïcha";

Note : Utilisez const pour les valeurs qui ne changent pas.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 21 / 81


Types primitifs en TypeScript

Types supportés : number, string, boolean, any, void, null,


undefined.
Type number : supporte les entiers, les flottants, les hexadécimaux, les
binaires, et les octaux.
Type string : supporte les chaînes de caractères.
Type boolean : valeurs true ou false.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 22 / 81


Type number

TypeScript utilise number pour représenter à la fois les entiers et les


nombres à virgule flottante.
Supporte différentes bases : décimale, hexadécimale, binaire, et octale.

Exemples
let entier: number = 42;
let flottant: number = 3.14;
let hex: number = 0xABCD;
let binaire: number = 0b1010;
let octal: number = 0o744;

Note : Utilisez des nombres flottants pour les calculs avec des décimales.
Quastion : Comment afficher hex, binaire et octal sur la console ?.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 23 / 81


Type string

Le type string est utilisé pour représenter des chaînes de caractères.


Supporte les guillemets simples, doubles, et les templates strings.
Les templates strings utilisent des backticks (" `") pour inclure des
expressions.

Exemples
let nom: string = "Aïcha";
let salutation: string = 'Bonjour';
let message: string = `Hello, ${nom}`; // Interpolation

Utilisation : Les templates strings sont pratiques pour construire des


chaînes complexes.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 24 / 81


Type boolean

Utilisé pour représenter deux valeurs : true ou false.


Pratique pour les conditions et les contrôles de flux.

Exemple
let isActive: boolean = true;
let isLoggedIn: boolean = false;

Utilisation : Les booléens sont souvent utilisés dans les instructions


conditionnelles.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 25 / 81


Les tableaux en TypeScript

Un tableau est une collection ordonnée d’éléments du même type.


Utilisé pour stocker plusieurs valeurs dans une seule variable.
TypeScript garantit que tous les éléments du tableau respectent le
type spécifié.
Syntaxe : let nom: type[];

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 26 / 81


Déclaration et initialisation d’un tableau

Deux façons de déclarer un tableau :


1 Utilisation des crochets : let nombres: number[];
2 Utilisation de la syntaxe générique : let nombres: Array<number>;

Exemple
let fruits: string[] = ["Pomme", "Banane", "Orange"];
let nombres: Array<number> = [1, 2, 3, 4, 5];
[Link](fruits); // Affiche ["Pomme", "Banane",
"Orange"]
[Link](nombres); // Affiche [1, 2, 3, 4, 5]

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 27 / 81


Accéder aux éléments d’un tableau

Utilisez des indices pour accéder aux éléments d’un tableau.


Les indices commencent à zéro (0).
Exemple d’accès à un élément :

Exemple
let couleurs: string[] = ["Rouge", "Vert", "Bleu"];
[Link](couleurs[0]); // Affiche "Rouge"
[Link](couleurs[2]); // Affiche "Bleu"

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 28 / 81


Modifier et jouter des éléments dans un tableau

Utilisez l’index pour modifier un élément existant.


Utilisez push() pour ajouter un nouvel élément.

Exemple
let nombres: number[] = [10, 20, 30];
nombres[1] = 25; // Modifie l’élément à l’indice 1
[Link](40); // Ajoute un élément à la fin
[Link](nombres); // Affiche [10, 25, 30, 40]

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 29 / 81


Parcourir un tableau avec une boucle

Utilisez une boucle for pour parcourir un tableau.


Utilisation de for...of pour un accès simplifié.

Exemple
let fruits: string[] = ["Pomme", "Banane", "Orange"];
for (let fruit of fruits) {
[Link](fruit);
}
// Affiche "Pomme", "Banane", "Orange"

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 30 / 81


Boucles avec forEach et map en TypeScript
forEach : Exécute une fonction pour chaque élément du tableau.
map : Crée un nouveau tableau en appliquant une fonction à chaque
élément.
Exemple avec forEach
let nombres: number[] = [1, 2, 3, 4, 5];
[Link]((num) => {
[Link](num * 2);
});
// Affiche 2, 4, 6, 8, 10

Exemple avec map


let carres = [Link]((num) => num * num);
[Link](carres);
// Affiche [1, 4, 9, 16, 25]
Note : forEach ne retourne rien, tandis que map retourne un nouveau
tableau.
M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 31 / 81
Tableaux multidimensionnels en TypeScript

TypeScript supporte les tableaux à plusieurs dimensions.


Utiles pour représenter des grilles, matrices, etc.

Exemple
let matrice: number[][] = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
[Link](matrice[1][2]); // Affiche 6

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 32 / 81


Types unions

Types Unions : Permet à une variable d’accepter plusieurs types.


Utilisé lorsque la valeur d’une variable peut être de différents types
selon le contexte.
Très utile pour les fonctions qui doivent accepter différents types
d’arguments.

Exemples Simples
let id: number | string = 123;
id = "ABC";
[Link](typeof id);
id=33;
[Link](typeof id);

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 33 / 81


Types unions

Cas d’Utilisation : Fonctions avec Types Unions


function printId(id: number | string): void {
if (typeof id === "string") {
[Link]("ID (string):", [Link]());
} else {
[Link]("ID (number):", [Link](2));
}
}

Cas d’Utilisation : Gérer des réponses d’API où un champ peut être


soit une chaîne, soit un nombre.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 34 / 81


Le Type "any"

Le type ’any’ permet à une variable de contenir n’importe quel type.


Semblable à JavaScript : les variables ne sont pas typées de manière
stricte.
Utilisation du type ’any’ désactive le typage statique de TypeScript.
Utile pour le débogage rapide ou la migration de projets
JavaScript vers TypeScript.
Usage déconseillé dans l’absolu.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 35 / 81


Exemples d’utilisation du type "any"

Exemple 1 : Variable avec Type ’any’


let data: any = 42;
data = "TypeScript"; data = true;

Exemple 2 : Fonction Acceptant ’any’


function processData(input: any): void {
[Link]("Input:", input);
}
processData(123); processData("Texte"); processData([1, 2,
3]);

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 36 / 81


Cas d’utilisation du type "any"

Utilisé lors de la migration d’un projet JavaScript existant vers


TypeScript.
Utile pour des données dynamiques provenant de sources externes
(API, fichiers JSON, etc.).
Pratique pour le débogage temporaire avant de déterminer le type
exact.

Exemple : Réponse d’API


let response: any = fetchDataFromAPI();
[Link]([Link]);

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 37 / 81


Précautions avec le type "any"

L’utilisation excessive de "any" annule les avantages du typage de


TypeScript.
Peut conduire à des erreurs à l’exécution difficiles à déboguer.
Préférez utiliser des types plus spécifiques (’unknown’, ’union types’,
etc.) si possible.

Alternative : Utiliser ’unknown’ au lieu de ’any’


let input: unknown = getInput();
if (typeof input === "string") {
[Link]([Link]());
}

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 38 / 81


Les Types ’any’ et ’unknown’ en TypeScript

’any’ : Permet à une variable d’accepter n’importe quel type de valeur.


’unknown’ : Peut contenir n’importe quel type de valeur, mais
nécessite une vérification avant utilisation.
Différence clé : ’any’ désactive les vérifications de types, tandis que
’unknown’ les impose.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 39 / 81


Comparaison entre ’any’ et ’unknown’

Caractéristique ’any’ ’unknown’


Accepte tous les ✓ ✓
types
Vérification de ✗ ✓
type avant utilisa-
tion
Sécurité du typage ✗ (risque d’erreurs) ✓ (plus sécurisé)
Utilisation recom- Migration, prototypes Entrées dynamiques
mandée

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 40 / 81


Exemples d’utilisation de ’any’ et ’unknown’
Exemple avec ’any’
let valeur: any = 10;
[Link]([Link]()); // Pas d’erreur à la
compilation

Problème : Pas de vérification, risque d’erreur à l’exécution.

Exemple avec "unknown"


let valeur: unknown = 10;
valeur = "TypeScript";
if (typeof valeur === "string") {
[Link]([Link]());
} else {
[Link]("La valeur n’est pas une chaîne");
}
Résultat : Sécurisé, nécessite une vérification de type.
M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 41 / 81
Fonctions avec typage

Spécifier les types pour les paramètres et le retour.


Supporte les paramètres optionnels et les valeurs par défaut.

Exemple
function addition(a: number, b: number = 0): number{
return a + b;
}
[Link](addition(5)); // Renvoie 5

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 42 / 81


Fonctions anonymes en TypeScript

Une fonction anonyme est une fonction sans nom.


Utilisée souvent comme argument à d’autres fonctions ou pour des
callbacks.
Pratique pour les opérations temporaires ou ponctuelles.

Exemple de Fonction Anonyme


const saluer = function(nom: string): string {
return "Bonjour, " + nom;
};
[Link](saluer("Aïcha")); // Bonjour, Aïcha

Utilisation : Souvent utilisée avec des méthodes comme [Link]


ou avec des évènements.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 43 / 81


Fonctions fléchées : écriture minimale

Les fonctions fléchées peuvent être écrites de manière très concise.


Idéales pour les fonctions simples sans paramètres.

Exemples
Fonction avec un paramètre :
const saluer = (nom: string) => `Bonjour, ${nom}`;
[Link](saluer("Aïcha")); // Bonjour, Aïcha

Fonction sans paramètre :


const direBonjour = () => "Bonjour tout le monde";
[Link](direBonjour()); // Bonjour tout le monde

Note : Pas besoin d’accolades ou de mot-clé return pour une seule


expression.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 44 / 81


Fonction fléchée vs fonction anonyme

Comportement du mot-clé this.


class Utilisateur {
nom: string;
constructor(nom: string) { [Link] = nom; }
saluerAnonyme() {
setTimeout(function() { [Link]("Bonjour " + [Link]);
}, 1000);
}
saluerFleche() {
setTimeout(()=>{[Link]("Bonjour " + [Link]);}, 1000);
}
}
const user = new Utilisateur("Aïcha");
[Link](); // Affiche "Bonjour undefined" après 1
seconde
[Link](); // Affiche "Bonjour Aïcha" après 1 seconde

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 45 / 81


Explications des résultats : fonction anonyme vs fléchée

Fonction Anonyme :
La fonction anonyme définit son propre contexte this.
Ici, this fait référence à l’objet setTimeout, non à l’instance
Utilisateur.
Résultat : "Bonjour undefined" car [Link] n’existe pas dans ce
contexte.
Fonction Fléchée :
La fonction fléchée hérite du contexte this de la classe Utilisateur.
Ici, this fait référence à l’instance Utilisateur.
Résultat : "Bonjour Aïcha" car [Link] est bien défini.
Conclusion : Utilisez des fonctions fléchées pour les callbacks afin d’éviter
les problèmes avec this.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 46 / 81


Fonctions avec paramètres optionnels
Les paramètres optionnels sont marqués avec point d’interrogation (?)
Utiles lorsque certains paramètres ne sont pas toujours nécessaires.
Si le paramètre n’est pas fourni, il sera défini à undefined.
Exemple Détaillé
function afficherInfo(nom: string, age?: number, ville?:
string): string {
let info = `Nom : ${nom}`;
if (age !== undefined) { info += `, Age : ${age}`; }
if (ville) { info += `, Ville : ${ville}`; }
return info;
}
[Link](afficherInfo("Aïcha")); // Nom : Aïcha
[Link](afficherInfo("Hamid", 25)); // Nom : Hamid, Age : 25
[Link](afficherInfo("Karima", 30, "Paris")); // Nom :
Karima, Age : 30, Ville : Paris

Note : Utilisez des conditions pour vérifier si un paramètre optionnel est


défini.
M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 47 / 81
Fonctions avec paramètres par défaut en TypeScript

TypeScript permet de définir des paramètres avec des valeurs par


défaut.
Si aucun argument n’est fourni, la valeur par défaut sera utilisée.
Syntaxe
function nom(param: type = valeurParDéfaut): typeRetour {}

Exemple
function saluer(nom: string = "inconnu"): void {
[Link](`Bonjour, ${nom}! `);
}
saluer(); // Affiche : Bonjour, inconnu!
saluer("Mohammed"); // Affiche : Bonjour, Mohammed!

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 48 / 81


Paramètres par défaut et optionnels
Les paramètres par défaut peuvent être combinés avec des paramètres
optionnels.
Un paramètre avec valeur par défaut est toujours évalué lors de l’appel.
Attention : Les paramètres avec valeur par défaut doivent être placés
après les paramètres obligatoires.

Exemple
function creerUtilisateur(nom: string, role: string =
"utilisateur"): void {
[Link](`Nom: ${nom}, Rôle: ${role}`);
}
creerUtilisateur("Aïcha"); // Affiche : Nom: Aïcha, Rôle:
utilisateur
creerUtilisateur("Hamid", "admin"); // Affiche : Nom: Hamid,
Rôle: admin
Note : Si un paramètre est optionnel, utilisez le symbole ?.
M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 49 / 81
Résumé

TypeScript apporte de la sécurité au développement JavaScript.


Le typage statique aide à éviter les erreurs courantes.
Recommandé pour les projets complexes ou collaboratifs.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 50 / 81


Sommaire

1. Introduction à TypeScript

2. Syntaxe et principes de base de TypeScript

3. Avantages de TypeScript par rapport à JavaScript


Sécurité de type et détection d’erreurs
Lisibilité et maintenabilité du code

4. Utilisation des types personnalisés, interfaces et génériques

5. Conclusion et Références

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 51 / 81


Sécurité de type en TypeScript

TypeScript effectue une vérification des types à la compilation.


Permet de détecter les erreurs avant même d’exécuter le code.
Réduit le risque de bugs en production.

Exemple : Erreur de Typage


let age: number = 25;
age = "trente"; // Erreur : Type ’string’ n’est pas
assignable au type ’number’

Résultat : L’erreur est détectée à la compilation.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 52 / 81


Pourquoi la sécurité de type est-elle importante ?

Prévention des erreurs courantes liées aux types.


Améliore la robustesse du code.
Facilite le refactoring du code sans introduire de nouvelles erreurs.

Exemple : Sécurité des fonctions


function addition(a: number, b: number): number {
return a + b;
}
[Link](addition(5, "3")); // Erreur à la compilation

Résultat : L’erreur est détectée avant l’exécution.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 53 / 81


Amélioration de la lisibilité avec TypeScript

Les types explicites rendent le code plus compréhensible.


La documentation est facilitée grâce aux annotations de type.
Les IDE comme VS Code offrent une autocomplétion basée sur les
types.

Exemple : Code Lisible avec TypeScript


interface Utilisateur {
nom: string;
age: number;
email: string;
}
const user: Utilisateur = { nom: "Aïcha", age: 30, email:
"aïcha@[Link]" };

Avantage : Le code est auto-documenté et facile à comprendre.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 54 / 81


Meilleure maintenabilité du code avec TypeScript

TypeScript aide à maintenir de grands projets grâce à la vérification


des types.
Facilite la collaboration en équipe en réduisant les erreurs dues aux
modifications.
Favorise l’utilisation de pratiques comme le refactoring en toute
sécurité.

Avant (JavaScript)
let produit = { id: 1, nom: "PC", prix: 1000 };
[Link] = "mille"; // Pas d’erreur en JavaScript
[Link]("Le prix est :", [Link]);

Problème : En JavaScript, il n’y a pas d’erreur, même si "prix" est


supposé être un "number".

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 55 / 81


Meilleure maintenabilité du code (suite..)

Après (TypeScript)
type Produit = { id: number; nom: string; prix: number };
let produit: Produit = { id: 1, nom: "PC", prix: 1000 };
[Link] = "mille"; // Erreur : Type ’string’ n’est pas
assignable au type ’number’
[Link]("Le prix est :", [Link]);

Résultat : Le système de types de TypeScript détecte automatiquement


l’erreur avant l’exécution, ce qui rend le code plus sûr et plus facile à
maintenir.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 56 / 81


Sommaire

1. Introduction à TypeScript

2. Syntaxe et principes de base de TypeScript

3. Avantages de TypeScript par rapport à JavaScript

4. Utilisation des types personnalisés, interfaces et génériques


Types personnalisés et Enums
Utilisation des Tuples
Classes en TypeScript
Interfaces en TypeScript
Comparaison entre Interfaces et Classes
Introduction aux génériques

5. Conclusion et Références
M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 57 / 81
Types personnalisés en TypeScript

Les types personnalisés simplifient et structurent le code.


Utilisation du mot-clé type pour créer des types personnalisés.

Exemple de Type Personnalisé


type ID = string | number;
let identifiant: ID = "123";
identifiant = 456;
[Link](identifiant);

Résultat : Affiche "456"

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 58 / 81


Enums en TypeScript

Les enums définissent des ensembles de valeurs nommées pour


améliorer la lisibilité.

Exemple d’Enum Numérique


enum Direction { Haut, Bas, Gauche, Droite };
let dir: Direction = [Link];
[Link](dir);

Résultat : Affiche "2"

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 59 / 81


Enums de chaînes

On peut aussi personnaliser les valeurs d’une énumération de la


manière suivante :

Exemple d’Enum de Chaînes


enum Role { Admin = "ADMIN", Utilisateur = "USER", Invite =
"GUEST" };
let role: Role = [Link];
[Link](role);

Résultat : Affiche "ADMIN"

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 60 / 81


Tuples en TypeScript

Un tuple est un tableau avec un nombre fixe d’éléments de types


prédéfinis.
Contrairement aux tableaux classiques, les types des éléments d’un
tuple sont définis à l’avance.
Utile pour regrouper des valeurs hétérogènes dans un ordre précis.

Exemple de Tuple Simple


let utilisateur: [string, number];
utilisateur = ["Aïcha", 30];
[Link](utilisateur);

Résultat : Affiche ‘["Aïcha", 30]‘

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 61 / 81


Accéder aux éléments d’un Tuple

Utilisez la notation d’index pour accéder aux éléments d’un tuple.


Les tuples ont un nombre fixe d’éléments, ce qui garantit l’ordre des
types.

Exemple
let produit: [string, number, boolean] = ["Ordinateur",
1000, true];
[Link](produit[0]); // "Ordinateur"
[Link](produit[1]); // 1000
[Link](produit[2]); // true

Note : Un accès hors limites génère une erreur.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 62 / 81


Destructuration des Tuples

TypeScript supporte la destructuration des tuples pour un accès


simplifié.

Exemple de Destructuration
let utilisateur: [string, number] = ["Hamid", 45];
let [nom, age] = utilisateur;
[Link](nom); // "Hamid"
[Link](age); // 45

Avantage : Simplifie l’accès aux valeurs dans un tuple.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 63 / 81


Tuples avec paramètres optionnels

Les tuples peuvent contenir des paramètres optionnels.


Pratique pour gérer des valeurs facultatives dans un ensemble ordonné.

Exemple
let employe: [string, number, string?] = ["Samir", 35];
[Link](employe); // ["Samir", 35]
employe = ["Samir", 35, "Développeur"];
[Link](employe); // ["Samir", 35, "Développeur"]

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 64 / 81


Tuples avec les fonctions

Les tuples peuvent être utilisés comme types de retour pour les
fonctions.
Utile pour retourner plusieurs valeurs de types différents.

Exemple de Fonction Retour Tuples


function getUtilisateur(): [string, number] {
return ["Aïcha", 30];
}
const [nom, age] = getUtilisateur();
[Link](nom); // "Aïcha"
[Link](age); // 30

Résultat : Retourne un tuple avec deux valeurs.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 65 / 81


Tuples immutables avec readonly

Utilisez le mot-clé readonly pour rendre un tuple immuable.


Empêche la modification des valeurs après l’initialisation.

Exemple d’un Tuple Immuable


const config: readonly [string, number] = ["Serveur",
8080];
[Link](config);
// config[1] = 3000; // Erreur : Impossible de modifier un
tuple en lecture seule

Avantage : Prévenir les modifications accidentelles.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 66 / 81


Introduction aux Classes en TypeScript

Une classe est un plan pour créer des objets avec des propriétés et des
méthodes.
TypeScript améliore les classes JavaScript en ajoutant le typage
statique.
Supporte les modificateurs d’accès comme public, private et
protected.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 67 / 81


Déclaration d’une Classe

Exemple de Classe
class Personne {
public nom: string;
private age: number;
constructor(nom: string, age: number) {
[Link] = nom;
[Link] = age;
}
public sePresenter(): void {
[Link](`Bonjour, je m’appelle ${[Link]}`);
}
}
const personne = new Personne("Aïcha", 30);
[Link]();

Résultat : Affiche "Bonjour, je m’appelle Aïcha"

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 68 / 81


Héritage avec les Classes
TypeScript supporte l’héritage avec le mot-clé extends.

Exemple d’héritage
class Employe extends Personne {
private poste: string;
constructor(nom: string, age: number, poste: string) {
super(nom, age);
[Link] = poste;
}
public afficherPoste(): void {
[Link](`Poste : ${[Link]}`);
}
}
const employe = new Employe("Hamid", 40, "Développeur");
[Link]();
[Link]();

Résultat : Affiche "Bonjour, je m’appelle Hamid" et "Poste : Développeur"


M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 69 / 81
Interfaces en TypeScript

Une interface définit la structure d’un objet sans implémentation.


Utilisée pour garantir la cohérence des types.

Exemple d’Interface
interface Utilisateur {
nom: string;
age: number;
email?: string;
}
const user: Utilisateur = { nom: "Aïcha", age: 30 };
[Link](user);

Résultat : Affiche { nom : "Aïcha", age : 30 }

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 70 / 81


Extension d’Interfaces

Les interfaces peuvent être étendues pour créer des objets plus
complexes.

Exemple d’Extension
interface Employe extends Utilisateur {
poste: string;
}
const employe: Employe = { nom: "Hamid", age: 25, poste:
"Développeur" };
[Link](employe);

Résultat : Affiche { nom : "Hamid", age : 25, poste : "Développeur" }

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 71 / 81


Interfaces vs. Classes en TypeScript

Interfaces :
Utilisées pour définir des contrats (structure d’objets).
Ne contiennent pas d’implémentation.
Idéales pour le typage statique et la documentation du code.
Classes :
Utilisées pour créer des objets avec des états et des comportements.
Peuvent contenir des méthodes, des constructeurs et des modificateurs
d’accès.
Supportent l’héritage pour la réutilisation du code.
Peuvent implémenter les Interfaces pour réutiliser leurs structures.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 72 / 81


Exemple Combiné : Interface et Classe

Interface + Classe
interface Drivable {
drive(): void;
}
class Car implements Drivable {
drive(): void {
[Link]("The car is driving.");
}
}
const myCar = new Car();
[Link]();

Résultat : Affiche "The car is driving"

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 73 / 81


Résumé : Quand utiliser Interfaces et Classes

Utilisez les interfaces pour :


Définir des structures d’objets.
Assurer la cohérence du typage à grande échelle.
Utilisez les classes pour :
Créer des objets avec des états et des méthodes.
Gérer la logique métier et l’héritage.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 74 / 81


Introduction aux génériques
Pourquoi Utiliser des Génériques ?

Les génériques permettent d’écrire du code réutilisable pour différents


types.
Utilisés avec des fonctions, des classes et des interfaces.

Syntaxe Générique
function nom<T>(param: T): T {...}

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 75 / 81


Fonctions Génériques

Les génériques permettent d’écrire des fonctions flexibles.

Exemple de Fonction Générique


function identite<T>(valeur: T): T {
return valeur;
}
[Link](identite(42)); // 42
[Link](identite("TypeScript")); // TypeScript

Résultat : Affiche ‘42‘ et ‘"TypeScript"‘

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 76 / 81


Génériques avec des tableaux

Exemple avec des tableaux


function filtrer<T>(elements: T[], filtre: (el: T) =>
boolean): T[] {
return [Link](filtre);
}
const nombres = [1, 2, 3, 4, 5];
const pairs = filtrer(nombres, n => n % 2 === 0);
[Link](pairs);

Résultat : Affiche ‘[2, 4]‘

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 77 / 81


Classes génériques

Exemple de Classe Générique


class Boite<T> {
contenu: T;
constructor(contenu: T) { [Link] = contenu; }
afficher() { [Link]([Link]); }
}
const boite = new Boite<number>(123);
[Link](); // 123

Résultat : Affiche ‘123‘

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 78 / 81


Sommaire

1. Introduction à TypeScript

2. Syntaxe et principes de base de TypeScript

3. Avantages de TypeScript par rapport à JavaScript

4. Utilisation des types personnalisés, interfaces et génériques

5. Conclusion et Références

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 79 / 81


Conclusion générale

Nous avons exploré les bases de TypeScript, ses avantages par rapport
à JavaScript, ainsi que ses types de données.
La syntaxe stricte de TypeScript permet de sécuriser le code et
d’améliorer la maintenabilité des projets.
TypeScript est devenu incontournable pour les grands projets, aussi
bien en Front-End qu’en Back-End.
Prochaines étapes : Utiliser TypeScript pour des projets Back-End avec
[Link] et Express, et pour des applications Front-End avec React.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 80 / 81


Références

Documentation officielle de TypeScript : [Link]


Ouvrages recommandés : "TypeScript Quickly" de Yakov Fain, Anton
Moiseev.

M. Mohammed BELATAR (EMSI) Chapitre 4 : TypeScript 28 décembre 2024 81 / 81

Vous aimerez peut-être aussi