如何在TypeScript的`window`上显式设置新属性?
本文翻译自:How do you explicitly set a new property on `window` in TypeScript?
I setup global namespaces for my objects by explicitly setting a property on window
. 我通过在window
上显式设置属性来为对象设置全局名称空间。
window.MyNamespace = window.MyNamespace || {};
TypeScript underlines MyNamespace
and complains that: TypeScript强调MyNamespace
并抱怨:
The property 'MyNamespace' does not exist on value of type 'window' any" 属性“ MyNamespace”在类型为“ window”的值上不存在“
I can make the code work by declaring MyNamespace
as an ambient variable and dropping the window
explicitness but I don't want to do that. 我可以通过将MyNamespace
声明为环境变量并删除window
显式性来使代码正常工作,但是我不想这样做。
declare var MyNamespace: any;MyNamespace = MyNamespace || {};
How can I keep window
in there and make TypeScript happy? 如何在其中保留window
并使TypeScript满意?
As a side note I find it especially funny that TypeScript complains since it tells me that window
is of type any
which by definitely can contain anything. 作为附带说明,我发现TypeScript抱怨特别有趣,因为它告诉我window
是any
类型,而window
肯定可以包含任何内容。
#1楼
参考:https://stackoom.com/question/rKD4/如何在TypeScript的-window-上显式设置新属性
#2楼
Just found the answer to this in another StackOverflow question's answer . 刚刚在另一个StackOverflow问题的答案中找到了答案 。
declare global {interface Window { MyNamespace: any; }
}window.MyNamespace = window.MyNamespace || {};
Basically you need to extend the existing window
interface to tell it about your new property. 基本上,您需要扩展现有的window
界面以向其介绍新属性。
#3楼
AS OF TYPESCRIPT ^3.4.3 THIS SOLUTION NO LONGER WORKS 截至TYPESCRIPT ^ 3.4.3,此解决方案不再起作用
Or... 要么...
you can just type: 您可以输入:
window['MyNamespace']
and you wont get a compile error and it works the same as typing window.MyNamespace
并且不会出现编译错误,它的工作原理与键入window.MyNamespace
相同
#4楼
The accepted answer is what I used to use, but with TypeScript 0.9.* it no longer works. 可接受的答案是我曾经使用的答案,但是使用TypeScript 0.9。*时,它将不再起作用。 The new definition of the Window
interface seems to completely replace the built-in definition, instead of augmenting it. Window
接口的新定义似乎完全替代了内置定义,而不是对其进行了扩充。
I have taken to doing this instead: 我改为这样做:
interface MyWindow extends Window {myFunction(): void;
}declare var window: MyWindow;
UPDATE: With TypeScript 0.9.5 the accepted answer is working again. 更新:使用TypeScript 0.9.5,可接受的答案再次起作用。
#5楼
要使其保持动态,只需使用:
(<any>window).MyNamespace
#6楼
Using TSX? 使用TSX? None of the other answers were working for me. 没有其他答案对我有用。
Here's what I did: 这是我所做的:
(window as any).MyNamespace
如何在TypeScript的`window`上显式设置新属性?相关推荐
- 关闭防火墙linux 16.04,如何在Ubuntu 16.04上配置和设置防火墙
在本文中,我们将学习–如何在Ubuntu 16.04上配置和设置UFW(防火墙),UFW代表"不复杂的防火墙",它充当IPTABLES的接口,从而简化了防火墙的配置过程,对于防火墙 ...
- 【转】如何在Ubuntu 16.04上使用UFW设置防火墙
https://www.howtoing.com/how-to-set-up-a-firewall-with-ufw-on-ubuntu-16-04/ 如何在Ubuntu 16.04上使用UFW设置防 ...
- Kindeditor 图片粘贴上传后设置图片属性
之前转载过一篇 Kindeditor 图片粘贴上传(https://blog.csdn.net/Dongguabai/article/details/100116608)的博客.但是还是存在一个问题, ...
- 让UpdatePanel支持上传文件:解决当页面显式设置document.domain时提示的500错误
最近在做一个项目,需要在UpdatePanel中上载文件,在网络上找了一下,发现有老赵写的AjaxUploadHelper,一开始工作的很好:开发时使用localhost来进行测试的,一切正常:但部署 ...
- 如何在Ubuntu 20.04上使用X2Go设置远程桌面
The author selected Software in the Public Interest (SPI) to receive a donation as part of the Write ...
- ARC下,不显式指定任何属性关键字时,默认的关键字都有哪些
1.对应基本数据类型默认关键字是 atomic,readwrite,assign 2.对于普通的 Objective-C 对象 atomic,readwrite,strong 转载于:https:// ...
- 如何在TypeScript代码里获得HTML元素的css属性
首先从angular/core里导入ElementRef: 然后注入到构造函数中: 最后通过如下代码访问名为–cx-max-views的CSS属性: /*** Returns the maximum ...
- 如何在Ubuntu 18.04上安装和配置NFS服务器
网络文件系统(NFS)是一种分布式文件系统协议,使您可以通过网络共享远程目录.使用NFS,您可以在系统上挂载远程目录,并像对待本地文件一样使用远程计算机上的文件. NFS协议默认情况下未加密,并且与S ...
- Oracle 11g Release 1 (11.1) 游标——显式游标
http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/static.htm#CIHCAHJA 本文内容 声明一个游标 打开一个游标 用游标获取一个 ...
最新文章
- C# Http方式下载文件到本地类改进版
- music‘s effects
- ABAP很厉害是怎么一种体验?
- python读写文件实例_python读写文件的简单示例
- linux十大证书,验证Linux上的X.509证书
- 前端基础知识(持续更新中)
- 小技巧:Win7屏保变梦幻桌面
- (诛仙剑C-SKY)1-初识
- 2021年高处安装、维护、拆除模拟考试题库及高处安装、维护、拆除作业考试题库
- 回射程序改进3——消息的群发
- 使用VScode阅读Linux源码
- IE低版本提示下载新的浏览器js--IEOutTips.zip
- 彭亮—Python学习
- 什么是 Headless CMS?
- 实例变量和类变量、实例方法类方法区别
- python怎样用函数求水仙花数_python求解水仙花数的方法
- 输出数组中数字排名(不允许并列排名)
- 【IDE-Visual Studio】VC\VS2005\VS2008\VS2010 消除 忽略 加强警告Warning
- java毕业设计——基于java+JSP+Tomcat的农产品销售管理系统设计与实现(毕业论文+程序源码)——农产品销售管理系统
- 小马哥---高仿三星n9100刷机 n910f 拆机主板详图与开机界面图 多图展示 版本众多