Typescript
Le coding style employé pour les projets :
- Angular : https://angular.io/guide/styleguide
- Vue : https://vuejs.org/style-guide/rules-essential.html Pour afficher les erreurs directement dans l'éditeur de texte, il suffit d'ajouter au projet ESLint et Prettier pour le formatage automatique (ESLint peut aussi agir comme formateur)
Explication des choix de codage
Le fichier tslint.json (de la page parente à celle-ci) contient l'ensemble des règles de codage pour les projets en Typescript.
Sur cette page on décrira une partie de ce que signifient les règles que l'on a choisi.
arrow-return-shorthand
Est à true dans notre configuration. Cela permet d'avoir des fonctions écrites de cette manière
() => aValue
Plutôt que de devoir écrire
() => { return aValue; }
eofline
Cette règle force la présence d'un saut de ligne en fin de fichier. Cela permet d'éviter des bugs insidieux qui fusionnerait deux instructions javascript qui ne devraient pas l'être.
no-console
Nous définissons cette règle à true de manière à s'assurer de ne pas avoir de console.log qui jonchent le code. Cela pour deux raisons :
- s'assurer que ce qui doit être loggué l'est de la bonne façon (logs envoyés à un serveur)
- la console est vraiment faite pour le développement, il est important de ne plus en avoir après.
no-inferrable-types
On active cette règle pour rendre le code plus lisible. Activée, cette règle permet de lever des warning lorsque on explicite le type d'une variable alors qu'on l'initialise avec une valeur de type number, string ou boolean.
quotemark
Ici on utilise la valeur single pour indiquer que les string literals (les assignations de chaînes de caractères) doivent utiliser les guillements simples.
semicolon (avec l'option "always")
On oblige la présence d'un point-virgule après chaque instruction, systématiquement. Pour une raison simple : la compilation. On s'assure ainsi que nos instructions font toujours ce pour quoi on les a écrites.
use-lifecycle-interface
Nous avons mis cette règle à true.
Cela permet de s'assurer que, lorsqu'une classe implémente une interface de lifecycle, la méthode requise soit actuellement implémentée.
Cela évite d'avoir des implements OnChanges sans ngOnChanges d'implémenter.
On obtient alors un code davantage épuré et cohérent (les interfaces étant forcément implémentées lorsque que le mot clé implements est utilisé).