We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JavaScript
window.MyNamespace = window.MyNamespace || {}
TS
Properpty 'MyNamespace' does not exist on type 'Window & typeof globalThis'
Window && typeof globalThis
MyNamespace
类型断言
(window as any).MyNamespace = {}
any
lib.dom.d.ts
window
declare interface Window{ MyNamespace: any }
/** A window containing a DOM document; the document property points to the DOM document loaded in that window. */ interface Window extends EventTarget, AnimationFrameProvider, GlobalEventHandlers, WindowEventHandlers, WindowLocalStorage, WindowOrWorkerGlobalScope, WindowSessionStorage { readonly applicationCache: ApplicationCache; readonly clientInformation: Navigator; readonly closed: boolean; customElements: CustomElementRegistry; defaultStatus: string; readonly devicePixelRatio: number; readonly doNotTrack: string; readonly document: Document; /** @deprecated */ readonly event: Event | undefined; /** @deprecated */ readonly external: External; readonly frameElement: Element | null; readonly frames: Window; readonly history: History; readonly innerHeight: number; readonly innerWidth: number; readonly length: number; location: Location; readonly locationbar: BarProp; readonly menubar: BarProp; readonly msContentScript: ExtensionScriptApis; name: string; readonly navigator: Navigator; offscreenBuffering: string | boolean; oncompassneedscalibration: ((this: Window, ev: Event) => any) | null; ondevicelight: ((this: Window, ev: DeviceLightEvent) => any) | null; ondevicemotion: ((this: Window, ev: DeviceMotionEvent) => any) | null; ondeviceorientation: ((this: Window, ev: DeviceOrientationEvent) => any) | null; ondeviceorientationabsolute: ((this: Window, ev: DeviceOrientationEvent) => any) | null; ongamepadconnected: ((this: Window, ev: GamepadEvent) => any) | null; ongamepaddisconnected: ((this: Window, ev: GamepadEvent) => any) | null; onmousewheel: ((this: Window, ev: Event) => any) | null; onmsgesturechange: ((this: Window, ev: Event) => any) | null; onmsgesturedoubletap: ((this: Window, ev: Event) => any) | null; onmsgestureend: ((this: Window, ev: Event) => any) | null; onmsgesturehold: ((this: Window, ev: Event) => any) | null; onmsgesturestart: ((this: Window, ev: Event) => any) | null; onmsgesturetap: ((this: Window, ev: Event) => any) | null; onmsinertiastart: ((this: Window, ev: Event) => any) | null; onmspointercancel: ((this: Window, ev: Event) => any) | null; onmspointerdown: ((this: Window, ev: Event) => any) | null; onmspointerenter: ((this: Window, ev: Event) => any) | null; onmspointerleave: ((this: Window, ev: Event) => any) | null; onmspointermove: ((this: Window, ev: Event) => any) | null; onmspointerout: ((this: Window, ev: Event) => any) | null; onmspointerover: ((this: Window, ev: Event) => any) | null; onmspointerup: ((this: Window, ev: Event) => any) | null; /** @deprecated */ onorientationchange: ((this: Window, ev: Event) => any) | null; onreadystatechange: ((this: Window, ev: ProgressEvent<Window>) => any) | null; onvrdisplayactivate: ((this: Window, ev: Event) => any) | null; onvrdisplayblur: ((this: Window, ev: Event) => any) | null; onvrdisplayconnect: ((this: Window, ev: Event) => any) | null; onvrdisplaydeactivate: ((this: Window, ev: Event) => any) | null; onvrdisplaydisconnect: ((this: Window, ev: Event) => any) | null; onvrdisplayfocus: ((this: Window, ev: Event) => any) | null; onvrdisplaypointerrestricted: ((this: Window, ev: Event) => any) | null; onvrdisplaypointerunrestricted: ((this: Window, ev: Event) => any) | null; onvrdisplaypresentchange: ((this: Window, ev: Event) => any) | null; opener: any; /** @deprecated */ readonly orientation: string | number; readonly outerHeight: number; readonly outerWidth: number; readonly pageXOffset: number; readonly pageYOffset: number; readonly parent: Window; readonly personalbar: BarProp; readonly screen: Screen; readonly screenLeft: number; readonly screenTop: number; readonly screenX: number; readonly screenY: number; readonly scrollX: number; readonly scrollY: number; readonly scrollbars: BarProp; readonly self: Window & typeof globalThis; readonly speechSynthesis: SpeechSynthesis; status: string; readonly statusbar: BarProp; readonly styleMedia: StyleMedia; readonly toolbar: BarProp; readonly top: Window; readonly visualViewport: VisualViewport; readonly window: Window & typeof globalThis; alert(message?: any): void; blur(): void; /** @deprecated */ captureEvents(): void; close(): void; confirm(message?: string): boolean; departFocus(navigationReason: NavigationReason, origin: FocusNavigationOrigin): void; focus(): void; getComputedStyle(elt: Element, pseudoElt?: string | null): CSSStyleDeclaration; getMatchedCSSRules(elt: Element, pseudoElt?: string | null): CSSRuleList; getSelection(): Selection | null; matchMedia(query: string): MediaQueryList; moveBy(x: number, y: number): void; moveTo(x: number, y: number): void; msWriteProfilerMark(profilerMarkName: string): void; open(url?: string, target?: string, features?: string, replace?: boolean): Window | null; postMessage(message: any, targetOrigin: string, transfer?: Transferable[]): void; print(): void; prompt(message?: string, _default?: string): string | null; /** @deprecated */ releaseEvents(): void; resizeBy(x: number, y: number): void; resizeTo(width: number, height: number): void; scroll(options?: ScrollToOptions): void; scroll(x: number, y: number): void; scrollBy(options?: ScrollToOptions): void; scrollBy(x: number, y: number): void; scrollTo(options?: ScrollToOptions): void; scrollTo(x: number, y: number): void; stop(): void; webkitCancelAnimationFrame(handle: number): void; webkitConvertPointFromNodeToPage(node: Node, pt: WebKitPoint): WebKitPoint; webkitConvertPointFromPageToNode(node: Node, pt: WebKitPoint): WebKitPoint; webkitRequestAnimationFrame(callback: FrameRequestCallback): number; addEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void; removeEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | EventListenerOptions): void; removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void; [index: number]: Window; }
Window
The text was updated successfully, but these errors were encountered:
No branches or pull requests
TypeScript: 如何在window对象上显示设置属性
JavaScript
的开发者来说, 对于window.MyNamespace = window.MyNamespace || {}
这行代码并不会陌生. 为了避免开发过程中出现冲突, 我们一般会为某些功能设置独立的命名空间TS
中对于window.MyNamespace = window.MyNamespace || {}
这行代码, TS编译器会提示以下异常信息:Window && typeof globalThis
交叉类型上不存在MyNamespace
属性, 如何解决这个问题呢? 最简单的方式是使用类型断言
any
大法可以解决上述问题, 但更好的方式是扩展lib.dom.d.ts
文件中的window
接口来解决上述问题lib.dom.d.ts 文件声明的 window 接口
Window
接口, 这并不会造成冲突. TypeScript会自动进行接口合并, 也就是把双方的成员放到一个同名的接口中.The text was updated successfully, but these errors were encountered: