TP 1 - Ajouter des types à un projet existant
Dans ce TP, nous allons ajouter des types à un projet existant pour améliorer la lisibilité du code et éviter des erreurs.
Mise en place
Clonez le dépôt
git clone https://sources.univ-jfc.fr/techno-web-3/tp-1.git cd tp-1Lancer
npm installOuvrez vscode à la racine du projet
code .Ouvrez le fichier
exercice-1.js. Normalement, votre éditeur doit signaler que des types sont manquants en souligant en rouge les endroits à compléter.Ajouter les types pour corriger les erreurs.
TP 2 - Memory
Partie 1 - Initialisation du projet from scratch
Créez un nouveau projet dans un nouveau répertoire nommé
memorynpm init -yInstallez typescript comme dépendance du projet
npm install -D typescriptCréez un fichier
tsconfig.jsonà la racine du projet{ "compilerOptions": { "target": "ES6", "module": "ES6", "outDir": "./dist", "rootDir": "./src", "strict": true } }
Ce fichier de configuration permet de définir les options de compilation de typescript pour le projet courant.
target: version de javascript ciblemodule: on précise le système de module utiliséoutDir: répertoire de sortie où seront placés les fichiers js compilésrootDir: répertoire sourcestrict: active une verification plus stricte
Créez un répertoire
srcet un fichierindex.tsmkdir src touch src/index.tsLe fichier
index.tscontiendra le code de l’application. Pour l’instant, vous pouvez ajouter un simpleconsole.log('Hello World')pour tester la compilation.Créer un fichier
index.htmlà la racine du projet<!doctype html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Memory</title> </head> </html>Ajoutez un script dans le fichier
package.jsonpour lancer le compilateur typescripttsc. Ce script sera exécuté avec la commandenpm run build.CorrigéLancez la compilation avec la commande
npm run build. Vous devriez voir un fichierindex.jsgénéré dans le répertoiredist. Ouvrez-le. Que constatez-vous ?Ajoutez une balise
scriptdans le HTML pour charger le fichierindex.jsgénéré par typescript (dans le répertoiredist).Ouvrez le fichier
index.htmldans un navigateur pour vérifier que le messageHello Worlds’affiche dans la console.
Partie 2 - Création d’un jeu de memory simple
Pour éviter de lancer la commande tsc à chaque modification, vous pouvez créer un script dev qui surveille les modifications des fichiers et recompile automatiquement le projet.
...
"scripts": {
"dev": "tsc --watch"
}Créer un type
Cartepour une carte de memory. Une carte possède un symbole et un état (retournée ou non). Les symboles possibles sont les emojis suivantes : 🍎, 🍌, 🍒, 🍓, 🍇, 🍉, 🍊, 🍍CorrigéCréer une fonction
creerJeuqui retourne un tableau de cartes mélangées. Ce tablau doit contenir 2 cartes de chaque symbole, soit 16 cartes au total.CorrigéCréer une fonction
afficherCartequi prend en paramètre un tableau de cartes et l’affiche dans l’interface du navigateur, sous forme d’un tableau de 4 lignes et 4 colonnes. Les cartes retournées doivent afficher leur symbole, les cartes cachées doivent afficher un espace.Tester que votre fonction affiche correctement les cartes en appelant la fonction
afficherCarte(jeuEnCours). Puis, changer passer l’état de quelques cartes de « caché » à « visible » et vérifier que l’affichage est correct.Rappel- Pour **créer un élément HTML**, on utilise la méthode [`document.createElement('div')`](https://developer.mozilla.org/fr/docs/Web/API/Document/createElement) - Pour **ajouter un élément** à un autre, on utilise la méthode [`myDomNode.appendChild(myElement)`](https://developer.mozilla.org/fr/docs/Web/API/Node/appendChild) - Pour **ajouter une classe** à un élément, on utilise la propriété [`classList.add()`](https://developer.mozilla.org/fr/docs/Web/API/Element/classList) - Pour **récupérer un élément du DOM**, on utilise la méthode [`document.querySelector(mySelector)`](https://developer.mozilla.org/fr/docs/Web/API/Document/querySelector) - Pour **supprimer un élément**, on utilise la méthode [`remove()`](https://developer.mozilla.org/fr/docs/Web/API/ChildNode/remove)Proposition de CSS
À ajouter dans un fichier
style.cssà la racine du projet, puis à inclure dans le fichierindex.htmlavec une baliselink..carte-container { display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(4, 1fr); width: fit-content; gap: 5px; } .carte { width: 50px; height: 50px; border: 1px solid black; display: flex; justify-content: center; align-items: center; font-size: 2rem; border-radius: 5px; }CorrigéLa suite au TP suivant.