title: Why does Typescript use the keyword "export" to make classes and interfaces public?
body: <p>While dabbling with Typescript I realised my classes within modules (used as namespaces) were not available to other classes unless I wrote the <code>export</code> keyword before them, such as:</p>
  
  <pre><code>module some.namespace.here
  {
     export class SomeClass{..}
  }
  </code></pre>
  
  <p>So now I can use the above code like this:</p>
  
  <pre><code>var someVar = new some.namespace.here.SomeClass();
  </code></pre>
  
  <p>However I was just wondering why this keyword is used opposed to just using the <code>public</code> keyword which is used at method level to signify that a method or property should be externally accessible. So why not just use this same mechanism to make classes and interfaces etc externally visible?</p>
  
  <p>This would give resulting code like:</p>
  
  <pre><code>module some.namespace.here
  {
     public class SomeClass{..}
  }
  </code></pre>