TypeScript Version: 2.6.0-dev.20170913
Code
if (name === "asdf") {
console.log("asdf")
}
https://www.typescriptlang.org/play/#src=if (name %3D%3D%3D "asdf") {%0D%0A console.log('hello')%0D%0A}
Expected behavior:
Error out
Actual behavior:
More than once, I had a "local" variable called name, outside a block scope, and it didn't warn me that it's not defined (or used before declaration). even though, in my code, event.name is a string, the global name variable is of type never. it's defined in lib.dom.d.ts, along with other "juicy" global names that will provide some confusion, like length, external, event, closed


one 'fix' (that would be a breaking change) would to make lib.dom-globals.d.ts (the propertiers that are usually accessible through window variable) and make it an opt-in in tsconfig.json compilerOptions.lib array
TypeScript Version: 2.6.0-dev.20170913
Code
https://www.typescriptlang.org/play/#src=if (name %3D%3D%3D "asdf") {%0D%0A console.log('hello')%0D%0A}Expected behavior:
Error out
Actual behavior:
More than once, I had a "local" variable called
name, outside a block scope, and it didn't warn me that it's not defined (or used before declaration). even though, in my code,event.nameis a string, the globalnamevariable is of typenever. it's defined inlib.dom.d.ts, along with other "juicy" global names that will provide some confusion, likelength,external,event,closedone 'fix' (that would be a breaking change) would to make
lib.dom-globals.d.ts(the propertiers that are usually accessible throughwindowvariable) and make it an opt-in intsconfig.json compilerOptions.libarray