No, because I&#x27;m shadowing the type, not overwriting it.<p>JS doesn&#x27;t have namespace scoping, and therefore everything has to be explicitly scoped. So if I create `my.awesome.Date`, just `Date` means JavaScript&#x27;s `Date`, and I have to put `my.awesome.Date` to get the new type. Typescript adds namespaces and scoping rules, so that anything in the `my.awesome` namespace or any namespace below it will see `Date` as `my.awesome.Date`. And there&#x27;s no way to explicitly reference the global scope, so within those namespaces the new type completely and irrevocably shadows the original JavaScript type.<p>Also in JavaScript, unless I overwrite the original `Date` type, I can always explicitly scope it by saying `window.Date`. But TypeScript doesn&#x27;t define `Date` within the `window` type, so I can&#x27;t use that out either.