Description
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