Blog ENI : Toute la veille numérique !
-25€ dès 75€ sur les livres en ligne, vidéos... avec le code FUSEE25. J'en profite !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Angular et Node.js
  3. Extensions JavaScript pour les classes
Extrait - Angular et Node.js Optimisez le développement de vos applications web avec une architecture MEAN (2e édition)
Extraits du livre
Angular et Node.js Optimisez le développement de vos applications web avec une architecture MEAN (2e édition) Revenir à la page d'achat du livre

Extensions JavaScript pour les classes

Présentation des extensions à JavaScript

Comme nous l’avons vu précédemment, le langage JavaScript est un langage de programmation orienté objet, mais qui ne gère pas de classes (avant sa normalisation avec ECMAScript 6) : c’est un langage de programmation orienté prototype, où les objets sont créés à partir d’autres objets dont ils « héritent » (les objets hérités pouvant bien sûr eux-mêmes hérités d’autres objets, et ainsi de suite, cet héritage d’objet en objet étant appelé le chaînage des prototypes).

Dans ce type de langage (dont JavaScript est de loin le plus populaire des représentants), deux aspects peuvent vite se révéler déconcertants et sources de problèmes :

  • Il est plus difficile de lire le « périmètre » d’un objet (ses attributs, ses méthodes) qu’en utilisant la syntaxe d’une classe.

  • Les propriétés propres à l’objet ou, de manière plus sournoise, celles héritées, peuvent être supprimées, modifiées, voire ajoutées à tout moment : il est donc possible en utilisant des codes tiers non maîtrisés (voire vos propres codes après les vacances) de « construire sur du sable ».

Par ailleurs...

Le langage TypeScript

TypeScript est une surcouche ajoutée au langage JavaScript et créée par Microsoft en 2012. Il permet notamment de :

  • Typer optionnellement les variables lors de leurs déclarations (typage statique).

  • Gérer des paramètres optionnels (en ajoutant un point d’interrogation accolé à leurs noms).

  • Créer des classes et les instancier.

  • Gérer un héritage simplifié.

  • Implémenter des interfaces (au sens de la programmation objet).

  • Gérer l’accès aux attributs par trois mots réservés : public, protected, private.

1. Le transpiler tsc

Le code TypeScript est transformé en code JavaScript via un transpiler (ou transcodeur) nommé tsc.

Voici un exemple de l’appel de ce transpiler en ligne de commande où code.ts est un code TypeScript :

tsc code.ts 

tsc va générer code.js, qui sera un code JavaScript « pur ».

Vous pouvez donc mélanger du code TypeScript avec du code JavaScript et cela peut conduire à des sommets d’illisibilité.

2. Typage statique des variables

Voici la spécification formelle du typage d’une variable :

const|let|var <variable>: <type> = <valeur>; 

Deux remarques :

  • Depuis l’introduction de let, l’utilisation de var n’a plus beaucoup d’intérêt. Il peut néanmoins toujours être employé.

  • Une espace peut être mise optionnellement avant ou après les deux-points qui séparent le nom de la variable de son type.

a. Les types de base

Les types de base de TypeScript reprennent ceux de JavaScript :

let entier: number = 1; 
let pi: number = 3.14; 
let bool: boolean = true; 
let nom: string = "Je suis une chaîne de caractères"; 
let objet: Object = {"name": "topPhone"}; 

b. Typage de variables non scalaires

Les variables non scalaires peuvent être aussi typées.

Le typage...

Le langage Dart

Cette section ne présente qu’un très bref aperçu du langage Dart, ce langage n’étant pas mis en œuvre dans nos exemples de code Angular.

Le langage Dart de Google avait initialement pour but d’offrir une alternative à JavaScript que ce soit du côté client (en le mettant prioritairement en œuvre au sein du navigateur Chrome) ou du côté serveur. Mais actuellement, son développement tend plutôt à le présenter comme une extension à JavaScript, à l’instar de TypeScript. Cela dit, Dart, est à l’heure de la rédaction de cet ouvrage, moins populaire que ce dernier langage (pour plusieurs raisons, mais notamment parce que TypeScript est utilisé par différents outils comme Angular CLI).

À la différence de JavaScript, TypeScript est un langage totalement orienté objet. L’implémentation de Dart est très différente de celle de JavaScript dans le but d’être bien meilleur en termes d’efficacité et de sécurité. Sa syntaxe, normalisée par ECMAScript, est relativement proche de celle de TypeScript.

Le typage des variables reste fortement dynamique en utilisant le mot réservé var, mais peut être optionnellement statique. Contrairement à JavaScript, les variables sont des objets (par exemple...