Enquanto brincava com o Typecript, percebi que minhas classes nos módulos (usadas como namespaces) não estavam disponíveis para outras classes, a menos que eu escrevesse a export
palavra-chave antes delas, como:
module some.namespace.here
{
export class SomeClass{..}
}
Então agora eu posso usar o código acima desta maneira:
var someVar = new some.namespace.here.SomeClass();
No entanto, eu estava me perguntando por que essa palavra-chave é usada, em vez de apenas usar a public
palavra - chave usada no nível do método para indicar que um método ou propriedade deve ser acessível externamente. Então, por que não usar esse mesmo mecanismo para tornar visíveis externamente classes e interfaces etc.?
Isso daria código resultante como:
module some.namespace.here
{
public class SomeClass{..}
}
fonte
Algumas coisas a acrescentar à resposta de Steve Fenton:
export
já significa duas coisas diferentes (dependendo se é de nível superior ou não); fazendo com que isso signifique que um terço é provavelmente pior do que adicionarpublic
/private
public
vsexport
é trivial. Já alteramos muitas palavras-chave; não é difícil.export
(unexport
??), assimprivate
como a escolha lógica. Uma vez que você tenhaprivate
, seria um pouco insano não escolherpublic
como sua contraparteexport
para modificar a visibilidade nos módulos internos é o alinhamento de melhor palpite com os módulos ES6fonte
export class User { name: string }
outro arquivo:import {User} from ""./the_file_path_to_the_user_class;
ver secção 3.3 dos docs nativescript aqui docs.nativescript.org/angular/tutorial/ng-chapter-3import
para indicar "esse valor não é exportado " seria um uso adequado da palavra-chave?