/ / TypeScript: utilisez privé ou public dans le constructeur - javascript, typescript

TypeScript: utiliser privé ou public dans le constructeur - javascript, typescript

Je suis nouveau dans le monde TypeScript, et j'ai vu des exemples avec celui-ci pour gérer les objets injectés et le définir sur une propriété du composant (this.anything)

Tout d'abord avec le public et la mise en main de this.nav

export class XPTO {
constructor(public nav: NavController) {
this.nav = nav;
}
}

et cela, avec privé

export class XPTO {
constructor(private nav: NavController) {
//this.nav is nav?
}
}

dans les deux cas, après avoir construit l'objet this.nav est un objet NavController. Quelles sont les différences des deux implémentations? Ou est-ce la même chose lorsqu'il est compilé en javascript ordinaire?

Réponses:

9 pour la réponse № 1

En fait, dans votre premier exemple, l'affectation explicite n'est pas nécessaire du tout:

export class XPTO {
constructor(public nav: NavController) {
// This line is not required.
// this.nav = nav;
this.someFunction();
}
someFunction(){
console.log(this.nav); // Prints out the NavController.
}
}

Chaque fois que vous sécurisez public ou private sur un paramètre constructeur, une variable publique / private correspondante est créée sur la classe et remplie avec la valeur du paramètre.

Donc, vraiment, la seule différence entre les deux exemples de code est que l'un est privé et l'autre public.

Le javascript résultant sera le même, mais le compilateur générera une erreur si vous essayez d'accéder à des variables privées dans votre code.


3 pour la réponse № 2

public et private, comme beaucoup de fonctionnalités Typescript, ne sontModificateurs TypeScript. Je ne suis pas sûr que le compilateur nomme ces variables exactement de la même façon, mais d'un point de vue JavaScript, le code sera essentiellement le même.

L'intérêt de Typescript est de vous offrir des fonctionnalités telles que la vérification de type, il ne modifie pas nécessairement toujours le code généré.