本文翻译自: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抱怨特别有趣,因为它告诉我windowany类型,而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`上显式设置新属性?相关推荐

  1. 关闭防火墙linux 16.04,如何在Ubuntu 16.04上配置和设置防火墙

    在本文中,我们将学习–如何在Ubuntu 16.04上配置和设置UFW(防火墙),UFW代表"不复杂的防火墙",它充当IPTABLES的接口,从而简化了防火墙的配置过程,对于防火墙 ...

  2. 【转】如何在Ubuntu 16.04上使用UFW设置防火墙

    https://www.howtoing.com/how-to-set-up-a-firewall-with-ufw-on-ubuntu-16-04/ 如何在Ubuntu 16.04上使用UFW设置防 ...

  3. Kindeditor 图片粘贴上传后设置图片属性

    之前转载过一篇 Kindeditor 图片粘贴上传(https://blog.csdn.net/Dongguabai/article/details/100116608)的博客.但是还是存在一个问题, ...

  4. 让UpdatePanel支持上传文件:解决当页面显式设置document.domain时提示的500错误

    最近在做一个项目,需要在UpdatePanel中上载文件,在网络上找了一下,发现有老赵写的AjaxUploadHelper,一开始工作的很好:开发时使用localhost来进行测试的,一切正常:但部署 ...

  5. 如何在Ubuntu 20.04上使用X2Go设置远程桌面

    The author selected Software in the Public Interest (SPI) to receive a donation as part of the Write ...

  6. ARC下,不显式指定任何属性关键字时,默认的关键字都有哪些

    1.对应基本数据类型默认关键字是 atomic,readwrite,assign 2.对于普通的 Objective-C 对象 atomic,readwrite,strong 转载于:https:// ...

  7. 如何在TypeScript代码里获得HTML元素的css属性

    首先从angular/core里导入ElementRef: 然后注入到构造函数中: 最后通过如下代码访问名为–cx-max-views的CSS属性: /*** Returns the maximum ...

  8. 如何在Ubuntu 18.04上安装和配置NFS服务器

    网络文件系统(NFS)是一种分布式文件系统协议,使您可以通过网络共享远程目录.使用NFS,您可以在系统上挂载远程目录,并像对待本地文件一样使用远程计算机上的文件. NFS协议默认情况下未加密,并且与S ...

  9. Oracle 11g Release 1 (11.1) 游标——显式游标

    http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/static.htm#CIHCAHJA 本文内容 声明一个游标 打开一个游标 用游标获取一个 ...

最新文章

  1. C# Http方式下载文件到本地类改进版
  2. music‘s effects
  3. ABAP很厉害是怎么一种体验?
  4. python读写文件实例_python读写文件的简单示例
  5. linux十大证书,验证Linux上的X.509证书
  6. 前端基础知识(持续更新中)
  7. 小技巧:Win7屏保变梦幻桌面
  8. (诛仙剑C-SKY)1-初识
  9. 2021年高处安装、维护、拆除模拟考试题库及高处安装、维护、拆除作业考试题库
  10. 回射程序改进3——消息的群发
  11. 使用VScode阅读Linux源码
  12. IE低版本提示下载新的浏览器js--IEOutTips.zip
  13. 彭亮—Python学习
  14. 什么是 Headless CMS?
  15. 实例变量和类变量、实例方法类方法区别
  16. python怎样用函数求水仙花数_python求解水仙花数的方法
  17. 输出数组中数字排名(不允许并列排名)
  18. 【IDE-Visual Studio】VC\VS2005\VS2008\VS2010 消除 忽略 加强警告Warning
  19. java毕业设计——基于java+JSP+Tomcat的农产品销售管理系统设计与实现(毕业论文+程序源码)——农产品销售管理系统
  20. 小马哥---高仿三星n9100刷机 n910f 拆机主板详图与开机界面图 多图展示 版本众多

热门文章

  1. C#.NET如何将cs文件编译成dll文件 exe文件 如何调用dll文件
  2. Asp.Net Core 项目实战之权限管理系统(0) 无中生有
  3. 行业大佬集体唱衰教育O2O,强管控的B2C模式将是唯一出路
  4. 内网配置DNS服务器,无域名,只有主机名
  5. 相册选取图片和照相机取图片
  6. 关于Fedora8中DNS配置问题解决
  7. 【ABAP系列】SAP ABAP中关于commit的一点解释
  8. day4-Python学习笔记(七)函数与模块
  9. 在一个函数中把值放到Cookies中比较是否相等
  10. shell脚本备份MySQL