Mientras incursionaba con el mecanografiado, me di cuenta de que mis clases dentro de los módulos (utilizados como espacios de nombres) no estaban disponibles para otras clases a menos que escribiera la export
palabra clave antes de ellas, como:
module some.namespace.here
{
export class SomeClass{..}
}
Entonces ahora puedo usar el código anterior como este:
var someVar = new some.namespace.here.SomeClass();
Sin embargo, me preguntaba por qué esta palabra clave se usa en lugar de solo usar la public
palabra clave que se usa a nivel de método para indicar que un método o propiedad debe ser accesible externamente. Entonces, ¿por qué no usar este mismo mecanismo para hacer que las clases e interfaces, etc., sean visibles externamente?
Esto daría un código resultante como:
module some.namespace.here
{
public class SomeClass{..}
}
fuente
Algunas cosas para agregar a la respuesta de Steve Fenton:
export
ya significa dos cosas diferentes (dependiendo de si está en el nivel superior o no); lo que significa que un tercio es probablemente peor que agregarpublic
/private
public
vsexport
es trivial. Ya hemos cambiado las palabras clave en un montón; no es dificil.export
(unexport
??), por lo queprivate
es la opción lógica. Una vez que lo haya hechoprivate
, sería un poco loco no elegirpublic
como su contraparteexport
para modificar la visibilidad en los módulos internos es la mejor alineación con los módulos ES6fuente
export class User { name: string }
Otro archivo:import {User} from ""./the_file_path_to_the_user_class;
consulte la sección 3.3 de los documentos nativescriptimport
para indicar "este valor no se exporta " sería un uso adecuado de la palabra clave?