Monday, 24 April 2017

Why is a global `name` variable declared in typescript and can I avoid using it?

A friend refactored some code and moved the definition of a variable called name from the function's top-level scope into a then's body. This variable was used in a subsequent then which caused a ReferenceError since name was not in scope.

We couldn't understand how the code passed compilation until we saw that typescript/lib.d.ts has the following deceleration:

declare const name: never;

Long story short, I have two questions.

  1. Why is name (as well as length and many other globals) added by default to typescript?
  2. From the surrounding code this seems meant for projects intended to run in a browser, we're a node.js project. Can we opt out from having these declarations added for us?


via Motti

No comments:

Post a Comment