我通过显式地将属性设置为window来设置对象的全局名称空间.

window.MyNamespace = window.MyNamespace || {};

TypeScript在MyNamespace下面加了下划线,并抱怨:

类型为"window"的值上不存在属性"MyNamespace"

我可以通过将MyNamespace声明为环境变量并go 掉window的明确性来让代码工作,但我不想这样做.

declare var MyNamespace: any;

MyNamespace = MyNamespace || {};

我怎样才能保持window在那里,并使Typescript 高兴?

作为旁注,我觉得TypeScript抱怨这件事特别有趣,因为它告诉我windowany型的,它肯定可以包含任何东西.

推荐答案

我在another Stack Overflow question's answer年前找到了答案.

declare global {
    interface Window { MyNamespace: any; }
}

window.MyNamespace = window.MyNamespace || {};

基本上,你需要扩展现有的window界面来告诉它你的新房产.

Typescript相关问答推荐

之间是否有区别:例如useEffect()React.useEffect()

参数类型undefined不能分配给参数类型字符串|未定义

如何在第一次加载组件时加载ref数组

如何在TypeScrip面向对象程序设计中用方法/属性有条件地扩展类

在NextJS中获得Spotify Oauth,但不工作'

有没有办法解决相互影响的路由之间的合并?

TypeScrip:基于参数的条件返回类型

状态更新后未触发特定元素的Reaction CSS转换

TypeScrip 5.3和5.4-对`Readonly<;[...number[],字符串]>;`的测试版处理:有什么变化?

有条件地删除区分的联合类型中的属性的可选属性

如何在省略一个参数的情况下从函数类型中提取参数类型?

从非文字数组(object.keys和array.map)派生联合类型

类型与泛型抽象类中的类型不可比较

如何通过转换器类继承使用多态将对象从一种类型转换为另一种类型

typescript如何从映射类型推断

我可以使用JsDocs来澄清Typescript实用程序类型吗?

在tabel管理区域react js上设置特定顺序

TypeScript:方法获胜';t接受较窄类型作为参数

在ts中获取级联子K类型?

两个子组件共享控制权