Je construis un Angular4 projet et utilise IntelliJ . Chaque fois que je crée une nouvelle classe, puis ajoute getters et setters . Le IDE ajoute des traits de soulignement aux champs.
Étant donné que la syntaxe TypeScript semble être reconnue automatiquement par IDE et crée pourtant les champs de cette manière, cela me laisse penser que c'est une bonne pratique, mais j'ai aussi lu que cela ne devrait pas être fait.
Pourquoi IDE fait-il cela? Et devrais-je lui permettre de le faire pour un projet angulaire? Merci pour toute aide!
Avant de créer les getters et les setters
export class Test {
hello:string;
world:string;
}
Après avoir créé les getters et les setters
export class Test {
private _hello:string;
private _world:string;
get hello(): string {
return this._hello;
}
set hello(value: string) {
this._hello = value;
}
get world(): string {
return this._world;
}
set world(value: string) {
this._world = value;
}
}
Le getter/setter ne peut pas avoir le nom qui correspond au nom de la propriété - les opérations suivantes ne fonctionneront pas:
class A {
get world() {
return this.world;
}
}
Le modèle général consiste donc à nommer les propriétés internes comme un setter/getter uniquement avec l'édition d'un trait de soulignement:
class A {
get world() {
return this._world;
}
}
Puisque JS et par conséquent TS ne disposent pas d’encapsulation à l’exécution, un trait de soulignement signifie généralement une propriété/variable interne/privée/encapsulée.
Mais rien ne vous oblige à utiliser des traits de soulignement. Si vous appelez votre getter/setter différemment, vous pouvez éviter d'ajouter des traits de soulignement:
class A {
get getWorld() {
return this.world;
}
}
Vous pouvez spécifier un préfixe différent à utiliser pour les champs dans Settings | Editor | Code Style | TypeScript | Code Generation
, Naming conventions/Field prefix
. Mais notez que laisser le préfixe vide entraînera des erreurs TS2300:Duplicate identifier