microsoft / microsoft/TypeScript
Dangerous "name" (and potentially others) global
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 117
Beschreibung
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
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit der Reproduktion und den globalen Deklarationen in lib.dom.d.ts, und überprüfe anschließend die vorgeschlagene Aufteilung in lib.dom-globals.d.ts sowie das Verhalten von tsconfig.json compilerOptions.lib. Prüfe die Diskussion auf die vereinbarte Richtung und ermittle, wie das Beispiel mit dem nicht deklarierten Namen und die zugehörigen Globals behandelt werden sollen. Als erledigt gilt die Aufgabe, wenn das beabsichtigte Verhalten für globale Namen implementiert ist und eine Abdeckung für den gemeldeten Fall vorhanden ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Aktiv
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100