En barbotant avec Typescript, j'ai réalisé que mes classes dans les modules (utilisés comme espaces de noms) n'étaient pas disponibles pour les autres classes à moins que j'aie écrit le export
mot - clé avant elles, tel que:
module some.namespace.here
{
export class SomeClass{..}
}
Alors maintenant, je peux utiliser le code ci-dessus comme ceci:
var someVar = new some.namespace.here.SomeClass();
Cependant, je me demandais simplement pourquoi ce mot-clé est utilisé par opposition à la simple utilisation du public
mot - clé qui est utilisé au niveau de la méthode pour signifier qu'une méthode ou une propriété doit être accessible de l'extérieur. Alors pourquoi ne pas simplement utiliser ce même mécanisme pour rendre les classes et les interfaces, etc. visibles de l'extérieur?
Cela donnerait un code résultant comme:
module some.namespace.here
{
public class SomeClass{..}
}
Quelques éléments à ajouter à la réponse de Steve Fenton:
export
signifie déjà deux choses différentes (selon que c'est au plus haut niveau ou non); ce qui signifie qu'un tiers est probablement pire que d'ajouterpublic
/private
public
vsexport
est triviale. Nous avons déjà changé de mots-clés autour d'un tas; ce n'est pas difficile.export
(unexport
??), c'est doncprivate
le choix logique. Une fois que vous l'avezprivate
, il serait un peu fou de ne pas choisirpublic
comme son homologueexport
pour modifier la visibilité dans les modules internes est le meilleur alignement avec les modules ES6la source
export class User { name: string }
Un autre fichier:import {User} from ""./the_file_path_to_the_user_class;
voir la section 3.3 de la documentation nativescriptimport
pour indiquer "cette valeur n'est pas exportée " serait-il une utilisation appropriée du mot-clé?