Skip to content

some global properties missing from window but accessible directly #14590

Closed
@ghost

Description

TypeScript Version: 2.1.1

Code

/**
 * typescript says `[ts] Property 'x' does not exist on type 'Window'.`
 * for all of these, but they all exist and work in browsers:
 */
window.Document
window.eval // <- this one is useful for "indirect eval" - i ran into this bug once earlier
window.EventTarget
window.Function
window.MouseEvent
window.HTMLElement
window.DocumentFragment

/**
 * same thing here, this is more similar to what i was doing when i found this bug
 */
var iframe = document.createElement("iframe");
iframe.contentWindow.Document
// etc etc

// somewhat important note: there are probably more, i just quickly came up with these

/**
 * they work in typescript if accessed this way:
 */
Document
eval
EventTarget
Function
MouseEvent
HTMLElement
DocumentFragment

(you can paste it in the typescript playground here: https://www.typescriptlang.org/play/)

Expected behavior:

there should be no errors, all the properties should exist on window

Actual behavior:

the properties don't exist on window but seem to exist in a "global scope" somehow so they're only visible to typescript when accessed directly

normally i guess i could just not use the window. prefix for accessing these properties, but that's not an option for indirect eval via window.eval or accessing the properties from other windows (iframes, window.opener, window.top, etc)

Metadata

Metadata

Assignees

No one assigned

    Labels

    DuplicateAn existing issue was already created

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions