Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
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. TypeScript
Extrait - Angular et Node.js Développement web full stack avec MEAN
Extraits du livre
Angular et Node.js Développement web full stack avec MEAN Revenir à la page d'achat du livre

TypeScript

Le langage TypeScript

Le langage TypeScript est un surensemble de JavaScript qui apporte des fonctionnalités supplémentaires à JavaScript. Il s’agit d’un langage de programmation open source développé par Microsoft pour améliorer la productivité des développeurs en ajoutant des fonctionnalités de typage statique à JavaScript. TypeScript est souvent décrit comme un langage de « JavaScript amélioré », car il permet de détecter les erreurs de typage avant l’exécution du code JavaScript, ce qui contribue à réduire les bogues et facilite la maintenance du code. TypeScript propose également des fonctionnalités avancées telles que l’héritage de classes, les interfaces, les modules et la vérification statique des types, ce qui en fait un choix populaire pour les projets de grande envergure et les équipes de développement collaboratives. Une fois le code TypeScript écrit, il est ensuite transpilé en JavaScript pour être exécuté sur n’importe quel navigateur ou environnement JavaScript. TypeScript est largement utilisé dans le développement d’applications Angular, car il fournit une meilleure prise en charge des outils de développement, des fonctionnalités de refactoring et une meilleure...

Les différences avec JavaScript

TypeScript inclut toutes les fonctionnalités de JavaScript et ajoute des fonctionnalités supplémentaires. Les principales différences entre TypeScript et JavaScript résident dans l’ajout de fonctionnalités de typage statique et dans la prise en charge des fonctionnalités avancées de programmation orientée objet.

  • Typage statique : l’une des principales différences est l’introduction du typage statique dans TypeScript. Contrairement à JavaScript, où les variables peuvent avoir n’importe quel type de données, TypeScript permet de déclarer et de détailler les types de variables, de paramètres de fonction, de valeurs de retour, etc. Cela permet de détecter les erreurs de typage lors de la compilation, ce qui facilite la détection précoce des erreurs et améliore la robustesse du code.

TypeScript :

let name: string = "John"; 
let age: number = 25; 
let isStudent: boolean = true; 

JavaScript :

let name = "John"; 
let age = 25; 
let isStudent = true; 

Dans l’exemple TypeScript, les types des variables sont explicitement déclarés (string, number, boolean), ce qui permet à TypeScript de détecter les erreurs de typage lors de la compilation.

  • Support des fonctionnalités de programmation...

Le transpiler et son utilité

Dans le développement moderne de sites web, le transpiler joue un rôle important dans la transformation de code source en code exécutable. Dans le contexte d’Angular et de Node.js, le transpiler est un outil qui permet de convertir le code écrit dans une version récente de JavaScript (ES6/ES2015) en une version compatible avec les navigateurs et les plateformes qui ne supportent pas encore cette version. Parmi les avantages de la transpilation, citons la possibilité d’utiliser des fonctionnalités plus modernes et avancées de JavaScript qui ne sont pas disponibles dans les anciennes versions (les fonctions fléchées, les classes et l’opérateur de propagation, etc.), ainsi que la détection d’erreurs avant l’exécution du code. Il existe plusieurs outils de transpilation disponibles pour le développement web, tels que Babel, TypeScript et Traceur. Ces outils prennent en charge différents aspects de la conversion de code, tels que la syntaxe, la sémantique et les API.

La transpilation ne dispense pas complètement de l’apprentissage des anciennes versions de JavaScript  ; il est toujours important de comprendre les concepts et les principes fondamentaux du langage. Elle est simplement un outil supplémentaire pour vous aider à écrire un code plus...

Les types

1. Les types de base

En Angular, les types de base comprennent les nombres, les chaînes de caractères, les booléens, les tableaux et les objets. Les nombres sont des entiers ou des nombres à virgule flottante et peuvent être utilisés pour effectuer des calculs mathématiques.

Il est important de comprendre ces types de base, car ils sont souvent utilisés dans le développement web avec Angular.

Par exemple, les données stockées dans une base de données peuvent être récupérées en tant qu’objets JavaScript, qui peuvent ensuite être affichés dans une application Angular en utilisant une liaison de données.

2. Le typage de variables non scalaires

Lorsque nous parlons de typage en programmation, nous pensons normalement aux types de données de base. Cependant, dans de nombreux langages de programmation, de frameworks ou même d’environnement de développement, y compris Angular et Node.js, il est également possible de définir des types de données complexes tels que des tableaux, des objets et des fonctions. Dans les langages de programmation statiquement typés, tels que Java ou C++, le type de chaque variable doit être déclaré avant son utilisation. Le compilateur est alors en mesure de vérifier si les données que vous utilisez ont des types compatibles...

Les fonctions

1. Définir une fonction

Une fonction est une portion de code qui effectue une tâche spécifique et qui peut être appelée à partir d’autres parties d’un programme. Nous en avons déjà parlé dans la sous-section Les blocs d’instructions du chapitre JavaScript et nous les utilisons souvent dans nos exemples. Une fonction peut prendre des arguments en entrée et renvoyer une valeur en sortie. Les fonctions permettent de modulariser le code et de le rendre plus lisible, en évitant d’avoir à répéter du code identique à plusieurs endroits. En Angular et Node.js, les fonctions sont largement utilisées pour la gestion des événements et des callbacks, ainsi que pour la manipulation des données et des modèles.

2. Les paramètres et la valeur de retour

Les paramètres d’une fonction sont les valeurs données en entrée à la fonction lorsqu’elle est appelée. La valeur de retour de la fonction est la valeur qu’elle renvoie en sortie lorsqu’elle a terminé de s’exécuter. Il est important de définir clairement les paramètres nécessaires à une fonction ainsi que la valeur qu’elle peut renvoyer. Cela aide à la fois à exploiter efficacement la fonction dans les scénarios souhaités et à éviter les erreurs d’utilisation. Il est également important de suivre les conventions de nommage de paramètres et de retours de fonction pour...

Les classes

1. La création d’une classe

Avant de créer une classe en Angular, il est important de comprendre la syntaxe et la structure de base de la création d’une classe en JavaScript.

Voici un exemple de classe en JavaScript :

class Person { 
  constructor(name, age) { 
    this.name = name; 
    this.age = age; 
  } 
 
  sayHello() { 
    console.log(`Hello, my name is ${this.name} 
and I am ${this.age} years old.`); 
  } 
} 

Dans cet exemple, nous avons créé une classe Person avec une méthode constructor qui initialise les propriétés name et age. Nous avons également créé une méthode sayHello qui affiche un message à la console.

Attention, les classes et les fonctions constructeurs ne sont pas la même chose ! Les classes en JavaScript offrent une syntaxe plus claire et plus orientée objet pour créer des objets, tandis que les fonctions constructeurs sont une approche plus ancienne et utilisent une syntaxe de fonction régulière avec le mot-clé new. Les classes facilitent l’héritage et la réutilisabilité du code, tandis que les fonctions constructeurs utilisent le prototype pour partager les méthodes entre les instances d’objets.

2. La création d’une instance d’objets

Lorsque vous travaillez avec Angular et Node.js, il est fréquent de créer des instances d’objets pour gérer différentes parties de votre application. La première étape de la création d’une instance d’objet est généralement de définir une classe qui sera utilisée pour créer l’objet. Vous pouvez le faire en utilisant la syntaxe de classe ES6 ou en utilisant le constructeur de fonction JavaScript traditionnel. Une fois que vous avez défini la classe, vous pouvez créer une instance de l’objet en utilisant l’opérateur new et en passant les arguments requis au constructeur de la classe.

Par exemple, si vous avez une classe nommée Person avec des propriétés telles que name et age, vous pouvez créer...

Les interfaces

1. Définir une interface

En TypeScript, une interface est une structure qui définit un contrat pour les objets. Elle permet de déclarer les propriétés et les méthodes que les objets doivent implémenter pour être considérés comme conformes à l’interface. Une interface en TypeScript est purement un outil de développement et de vérification de type, elle ne génère pas de code JavaScript lors de la compilation. Une interface définit la structure et le comportement attendus d’un objet sans fournir d’implémentation réelle. Elle sert de contrat entre différentes parties du code pour garantir que les objets respectent certaines spécifications.

Voici un exemple simple d’une interface Person en TypeScript :

interface Person { 
  name: string; 
  age: number; 
  introduce(): void; 
} 

Une fois que vous avez défini une interface, vous pouvez l’utiliser pour typer des objets et vous assurer qu’ils respectent le contrat de l’interface. Cela signifie que les objets qui implémentent l’interface doivent avoir les mêmes propriétés et méthodes avec les mêmes types de données.

Par exemple, vous pouvez créer une classe Employee qui implémente l’interface...

Les décorateurs

Les décorateurs sont une fonctionnalité avancée qui permet d’ajouter des métadonnées et de modifier le comportement des classes, des méthodes, des propriétés et d’autres éléments du code. Les décorateurs fournissent un moyen de décorer ou d’annoter des éléments du code avec des fonctionnalités supplémentaires, sans avoir à les modifier directement. Les décorateurs sont définis à l’aide de la syntaxe @nomDuDecorateur qui est placée juste avant la déclaration de l’élément à décorer. Ils peuvent être utilisés pour ajouter des fonctionnalités telles que la journalisation, la validation, la gestion des autorisations, la transformation des données, etc.

Un décorateur est lui-même une fonction qui est appelée avec différentes informations sur l’élément décoré. Il peut prendre des arguments et retourner une nouvelle version de l’élément décoré, en y ajoutant des comportements supplémentaires.

Voici un exemple simple d’utilisation d’un décorateur pour ajouter une fonctionnalité de journalisation à une méthode de classe en TypeScript :

function logConstructor(constructor:...

Conclusion

Au cours de ce chapitre, nous avons plongé dans la diversité des types, qu’il s’agisse des types fondamentaux ou des types spéciaux tels que enum ou any. Une compréhension solide de ces types est essentielle pour une utilisation efficace de TypeScript, car elle permet de définir rigoureusement la nature des données manipulées, ce qui contribue à la fiabilité du code. Nous avons également mis en lumière les différences substantielles entre JavaScript et TypeScript, et ce faisant, nous avons mis en évidence les raisons qui poussent les développeurs à adopter ce dernier. Cette comparaison a permis de saisir la valeur ajoutée que TypeScript apporte au développement web moderne.

Les fonctions ont été au cœur de notre exploration, en particulier les fonctions anonymes et les fonctions constructeurs. Ces éléments fondamentaux sont les briques de base de la programmation en TypeScript, ils permettent de créer des routines réutilisables et d’initialiser des objets de manière structurée.

Nous avons ensuite vu comment créer des classes, instancier des objets, gérer l’héritage, et nous avons étudié la surcharge de méthodes. Les classes sont la pierre angulaire de la programmation orientée objet en TypeScript, elles...