TypeScript for Beginners, Part 4 Classes

Nous avons parcouru un long chemin dans l'apprentissage de TypeScript depuis le début de cette série. Le premier tutoriel vous a donné une brève introduction à TypeScript et a suggéré quelques IDE que vous pouvez utiliser pour écrire TypeScript. Le deuxième tutoriel était axé sur les types de données et le troisième portait sur les bases des interfaces dans TypeScript..

Comme vous le savez peut-être déjà, JavaScript n’a que récemment ajouté la prise en charge native des classes et de la programmation orientée objet. Cependant, TypeScript a permis aux développeurs d'utiliser des classes dans leur code depuis longtemps. Ce code est ensuite compilé en JavaScript qui fonctionnera sur tous les principaux navigateurs. Dans ce tutoriel, vous apprendrez à connaître les classes dans TypeScript. Ils sont similaires à leurs homologues ES6 mais sont plus stricts.

Créer votre première classe

Commençons par les bases. Les classes sont un élément fondamental de la programmation orientée objet. Vous utilisez des classes pour représenter toute entité disposant de propriétés et de fonctions pouvant agir sur des propriétés données. TypeScript vous donne un contrôle total sur les propriétés et les fonctions accessibles à l'intérieur et à l'extérieur de leur propre classe. Voici un exemple très basique de création d’un La personne classe.

classe Person name: string; constructeur (theName: string) this.name = theName;  introdSelf () console.log ("Bonjour, je suis" + this.name + "!");  let personA = new Person ("Sally"); personA.introduceSelf ();

Le code ci-dessus crée une classe très simple appelée La personne. Cette classe a une propriété appelée prénom et une fonction appelée se présenter. La classe a également un constructeur, qui est aussi fondamentalement une fonction. Cependant, les constructeurs sont spéciaux car ils sont appelés chaque fois que nous créons une nouvelle instance de notre classe.. 

Vous pouvez également transmettre des paramètres aux constructeurs afin d’initialiser différentes propriétés. Dans notre cas, nous utilisons le constructeur pour initialiser le nom de la personne que nous créons en utilisant le La personne classe. le se présenter fonction est une méthode de la La personne classe, et nous l’utilisons ici pour imprimer le nom de la personne sur la console. Toutes ces propriétés, méthodes et le constructeur d'une classe sont collectivement appelés membres de la classe.

Vous devriez garder à l'esprit que le La personne classe ne crée pas automatiquement une personne par elle-même. Il s'agit plus d'un plan détaillé contenant toutes les informations sur les attributs qu'une personne devrait avoir créés. Dans cet esprit, nous avons créé une nouvelle personne et l'avons nommée Sally. Appeler la méthode se présenter sur cette personne va imprimer la ligne "Salut, je suis Sally!" à la console.

Modificateurs privés et publics

Dans la section précédente, nous avons créé une personne nommée Sally. À l'heure actuelle, il est possible de changer le nom de la personne de Sally à Mindy n'importe où dans notre code, comme indiqué dans l'exemple suivant.

classe Person name: string; constructeur (theName: string) this.name = theName;  introdSelf () console.log ("Bonjour, je suis" + this.name + "!");  let personA = new Person ("Sally"); // Imprime "Salut, je suis Sally!" personA.introduceSelf (); personA.name = "Mindy"; // Imprime "Bonjour, je suis Mindy!" personA.introduceSelf (); 

Vous avez peut-être remarqué que nous avons pu utiliser les deux prénom la propriété et la se présenter méthode en dehors de la classe contenante. En effet, tous les membres d’une classe dans TypeScript sont Publique par défaut. Vous pouvez également spécifier explicitement qu'une propriété ou une méthode est publique en ajoutant le mot clé Publique avant cela.

Parfois, vous ne voulez pas qu'une propriété ou une méthode soit accessible en dehors de la classe qui la contient. Ceci peut être réalisé en rendant ces membres privés en utilisant le privé mot-clé. Dans le code ci-dessus, nous pourrions faire la propriété name privé et l'empêcher d'être changé en dehors de la classe contenante. Après cette modification, TypeScript affichera une erreur indiquant que le prénom la propriété est privé et vous ne pouvez y accéder qu'à l'intérieur du La personne classe. La capture d'écran ci-dessous montre l'erreur dans Visual Studio Code.

Héritage dans TypeScript

L'héritage vous permet de créer des classes plus complexes à partir d'une classe de base. Par exemple, nous pouvons utiliser le La personne classe de la section précédente comme base pour créer un Ami classe qui aura tous les membres du La personne et ajouter quelques membres de son propre. De même, vous pouvez également ajouter un Famille ou Prof classe. 

Ils hériteront tous des méthodes et des propriétés du La personne tout en ajoutant certaines méthodes et propriétés propres pour les différencier. L'exemple suivant devrait le rendre plus clair. J'ai aussi ajouté le code pour le La personne classe ici afin que vous puissiez facilement comparer le code de la classe de base et de la classe dérivée.

classe Person nom privé: string; constructeur (theName: string) this.name = theName;  introdSelf () console.log ("Bonjour, je suis" + this.name + "!");  La classe Friend étend Person yearsKnown: number; constructeur (nom: chaîne, yearsKNown: nombre) super (nom); this.yearsKnown = yearsKnown;  timeKnown () console.log ("Nous sommes amis depuis" + this.yearsKnown + "years.") let friendA = nouvel ami ("Jacob", 6); // impressions: Bonjour, je suis Jacob! friendA.introduceSelf (); // Prints: Nous sommes amis depuis 6 ans. friendA.timeKnown (); 

Comme vous pouvez le voir, vous devez utiliser le étendre mot clé pour le Ami classe pour hériter de tous les membres du La personne classe. Il est important de se rappeler que le constructeur d'une classe dérivée doit toujours invoquer le constructeur de la classe de base avec un appel à super().

Vous avez peut-être remarqué que le constructeur de Ami n'a pas besoin d'avoir le même nombre de paramètres que la classe de base. Cependant, le paramètre du premier nom a été passé à super() afin d'appeler le constructeur du parent, qui a également accepté un paramètre. Nous n'avons pas eu à redéfinir le se présenter fonctionner à l'intérieur du Ami classe parce qu'il a été hérité de la La personne classe.

Utiliser le modificateur protégé

Jusqu’à présent, nous n’avons fait que les membres d’une classe soit privé ou Publique. Les rendre publiques nous permet d’y accéder depuis n’importe où, ce qui les rend privées limite leur classe à leur propre classe. Parfois, vous voudrez peut-être que les membres d'une classe de base soient accessibles dans toutes les classes dérivées. 

Vous pouvez utiliser le protégé modificateur dans de tels cas pour limiter l’accès d’un membre aux classes dérivées. Vous pouvez également utiliser le protégé mot-clé avec le constructeur d'une classe de base. Cela empêchera quiconque de créer une instance de cette classe. Cependant, vous pourrez toujours étendre des classes basées sur cette classe de base.

classe Person nom privé: string; âge protégé: nombre; constructeur protégé (theName: string, theAge: number) this.name = theName; this.age = theAge;  introdSelf () console.log ("Bonjour, je suis" + this.name + "!");  La classe Friend étend Person yearsKnown: number; constructeur (nom: chaîne, âge: nombre, annéesKNown: nombre) super (nom, âge); this.yearsKnown = yearsKnown;  timeKnown () console.log ("Nous sommes amis depuis" + this.yearsKnown + "years.") friendSince () let firstAge = this.age - this.yearsKnown; console.log ('Nous sommes amis depuis l'âge de $ firstAge ans.' let friendA = nouvel ami ("William", 19, 8); // Imprimés: Nous sommes amis depuis l'âge de 11 ans. friendA.friendSince ();

Dans le code ci-dessus, vous pouvez voir que nous avons fait la âge propriété protégé. Cela empêche l'utilisation de âge en dehors de toute classe dérivée de La personne. Nous avons également utilisé le protégé mot clé pour le constructeur du La personne classe. Déclarer le constructeur comme protégé signifie que nous ne pourrons plus instancier directement le La personne classe. La capture d’écran suivante montre une erreur qui apparaît lorsqu’on tente d’instancier une classe avec le protégé constructeur.

Dernières pensées

Dans ce tutoriel, j'ai essayé de couvrir les bases des classes dans TypeScript. Nous avons commencé le tutoriel en créant une base La personne classe qui a imprimé le nom de la personne sur la console. Après cela, vous avez appris sur le privé mot-clé, qui peut être utilisé pour empêcher l'accès aux membres d'une classe à n'importe quel moment du programme. 

Enfin, vous avez appris à étendre différentes classes de votre code en utilisant une classe de base avec héritage. Vous pouvez en apprendre beaucoup plus sur les cours dans la documentation officielle..

Si vous avez des questions concernant ce didacticiel, faites-le moi savoir dans les commentaires..