&gt; Typescript&#x27;s following the usual JS scope closure rules: the namespace syntax is sugar for the usual sort of JS &quot;IIFE&quot; object pattern, which you should be able to plainly see in the transpiled output.<p>Yes, and in the transpiled output I will see `Date` turned into `my.awesome.Date` for files within the namespace scope. As I said, JavaScript is always explicitly scoped, so unless you shadow it with a local variable or overwrite the original, you can always access it. So I could easily write `my.awesome.Date` in JavaScript without shadowing the native `Date`, but I cannot do that in TypeScript because of the namespace scoping rules it adds. Which, pains of using TypeScript being the original prompt, seemed quite relevant.