Depuis longtemps déjà j’utilise l’extension jshint dans mes éditeurs (Sublime Text et Visual Code Studio) pour me guider sur le développement dans ce langage ; il faut dire qu’historiquement je n’étais vraiment pas du tout à l’aise avec lui, même si depuis j’ai acquis pas mal d’expérience — il m’en reste beaucoup à voir, cela dit.
Assez récemment j’ai aussi installé l’extension eslint qui à l’air plus utilisée que la précédente.
Et puis j’ai commencé, il y a quelques jours, à vraiment m’intéresser aux classes javascript et je bloquais sur un truc qui me semblait parfaitement défini dans les docs officielles et aussi bien supporté dans les navigateurs récents : la possibilité de définir des propriétés en plus des méthodes dans les classes.
À chaque fois que je tentais d’ajouter une propriété dans une classe, j’avais droit à un message de chacune des extensions m’indiquant que « Nan nan, spa autorisé ça ! » :
class debugClass {
field = null;
constructor() {
this.debug = true;
}
dump() {
console.log(this.debug);
}
}
Tu vois la 2e ligne, où je déclare une propriété publique field initialisée à null ? Eh bien les deux linters (extensions) me disait que c’était pas bien.
En fait c’était, pour eslint, un simple problème de configuration où je n’avais pas précisé que je voulais utiliser du javascript récent ; quand à jshint, pas moyen de lui faire entendre raison, à tout le moins de façon simple.
Je pense que je vais simplement supprimer l’extension jshint, qui semble faire double emploi avec eslint !
1 De Da Scritch -
Yep, fait gaffe, j’ai eu des conflits entre deux linters, en fait vaut mieux se concentrer sur un seul, quitte à aller dans ses multiples paramètres.
Et si tu transpiles ton JS pour les vieux navigateurs, tu peux effectivement passer
"es2021": true
dans les paramètresenv
.2 De Franck -
Tout à fait, j’ai conservé eslint et ai déjà configuré l’environnement avec es2021. Par contre, je ne transpile rien du tout, la prochaine 2.21 nécessitera un navigateur moderne, a minima pour le backend ;-)