Applications complètes
TypeScript 101, Télécom Paris
Deux questions sur la séance 6, tirées des QCM du cours.
Qu’affiche ce code ? attendre(ms) renvoie une promesse tenue après ms millisecondes.
1 2 3 · B. 1 3 2 · C. 3 1 2 · D. 3 2 1B. Au premier await, la fonction rend la main.
Le serveur répond 404 Not Found. Que se passe-t-il ?
catchresponse.ok vaut falseresponse vaut nullresponse.status vaut 0B. Testez toujours response.ok. C’est ce que fera chaque client CRUD de la séance.
json-serversubmit, lire et typer les champs d’un formulaireMini-cours court : la séance l’est aussi. L’essentiel se passe dans les exercices.
| Opération | Verbe | URL type | Corps | Statut |
|---|---|---|---|---|
| Create | POST |
/restaurants |
oui | 201 Created |
| Read | GET |
/restaurants/12b3 |
non | 200 OK |
| Update | PUT / PATCH |
/restaurants/12b3 |
oui | 200 OK |
| Delete | DELETE |
/restaurants/12b3 |
non | 200 ou 204 |
/restaurants désigne la collection, /restaurants/12b3 désigne un élément. On crée dans une collection ; on modifie ou supprime un élément.
| Code | Nom | Sens pratique |
|---|---|---|
200 |
OK | la réponse contient le résultat |
201 |
Created | créé, URL dans l’en-tête Location |
204 |
No Content | réussi, rien à renvoyer |
400 |
Bad Request | requête mal formée |
401 |
Unauthorized | non identifié |
403 |
Forbidden | identifié, mais pas le droit |
404 |
Not Found | la ressource n’existe pas |
500 |
Server Error | le serveur a planté |
2xx succès · 4xx votre faute · 5xx la sienne.
json-serverIl transforme un fichier JSON en API REST complète.
Chaque clé de premier niveau devient une route : /restaurants, /categories.
db.json est modifié pour de bon
Un POST, PATCH ou DELETE réécrit le fichier sur le disque. Au deuxième lancement, le DELETE renverra 404 et le POST créera un doublon.
Gardez une copie de db.json de côté.
submit et preventDefaulthandleSubmit(event: Event) {
event.preventDefault(); // sans cette ligne, la page se recharge
const name = this.nameInput.value;
if (name.length < 4) {
this.result.style.color = "red";
this.result.textContent = "Name must be at least 4 characters long.";
} else {
this.result.style.color = "green";
this.result.textContent = `Name Ok: ${name}`;
}
}Écoutez submit sur le formulaire, jamais click sur le bouton : la touche Entrée dans un champ soumet aussi.
getElementById retourne HTMLElement | null, qui n’a ni .value ni .checked.
La seconde est plus sûre : si l’id a été renommé, la première plante avec Cannot read properties of null.
.bind(this) ?Quand le navigateur déclenche l’événement, il appelle la fonction en fixant this sur l’élément qui porte l’écouteur : ici le <form>.
Votre méthode chercherait donc this.nameInput sur un formulaire, où cette propriété n’existe pas : undefined, puis Cannot read properties of undefined.
Les deux écritures marchent : une fonction fléchée ne crée pas son propre this.
Le chapitre 7.3 Web components se fait après la séance. Seul le composant minimal est au programme de l’évaluation 2 :
class MonElement extends HTMLElement {
static get observedAttributes(): string[] { return ["mon-attribut"]; }
connectedCallback(): void { this.render(); }
attributeChangedCallback(): void { this.render(); }
render(): void { this.textContent = this.getAttribute("mon-attribut") ?? ""; }
}
customElements.define("mon-element", MonElement);La page Préparer l’évaluation 2 du site propose un plan en cinq étapes :
Une grille d’auto-évaluation, compétence par compétence, termine la page.
Parcours essentiel, en séance
Après la séance
<date-time><greet-custom> (transfert)Ensuite
Ce qui n’est pas fini en séance se termine en autonomie, avec la page « Préparer l’évaluation 2 ».