当前位置: 首页 > 知识库问答 >
问题:

TypeScript:在窗口对象上分配自定义属性[duplicate]

韩晋
2023-03-14

我有一个web扩展,可以在窗口对象上应用自定义对象,如:

window.extensionName // { method1: () => {} }

然而,在我的TypeScript文件中,当我引用< code > window . extension name 时,我得到以下错误:

Property 'extensionName' does not exist on type 'Window & typeof globalThis'.

但实际上它确实存在于window对象上,因为它是由扩展添加的。如何让TypeScript停止对此抱怨?

有没有办法为我的整个项目全局指定新对象的类型,以便TypeScript可以使用自动完成?

共有2个答案

上官迪
2023-03-14

您可以使用声明var来声明extensionName存在于

declare var extensionName: { method1: () => {} };

window.extensionName.method1 = () => {
  return {};
}

演示

傅和璧
2023-03-14

您可以通过声明合并扩展Window的定义。

这不会产生错误:

interface Window {
  extensionName: {
    method1: () => {}
  }
}

window.extensionName.method1 = () => {
  return {};
}

TypeScript操场演示了这一技术。

 类似资料:
  • 问题内容: 我曾在这里看到类似的问题,但没有一个与我的情况相符。在我的网站我有3个文件:,,。在其中,我创建了一个名为的窗口变量,并向其中添加了一些属性。在中,我添加了一些其他属性并在其中使用它们,然后导出文件并在中使用它。 : : : 在node.js中运行服务器时,出现以下错误: ReferenceError:未在对象上定义窗口。 据我了解,window是浏览器属性,但是在这种情况下如何解决错

  • The BrowserWindow module is the foundation of your Electron application, and it exposes many APIs that can change the look and behavior of your browser windows. In this tutorial, we will be going over

  • 我有以下工作(运行)代码,但我得到TypeScript错误属性'onSubmit'不存在于类型'Window 在我的 global.d.ts 文件中,我尝试导出要导入的接口 并声明全局 两个解决方案都不成功,错误仍然存在。如何将属性添加到窗口对象以供TypeScript识别?

  • 我读过关于使用比较器对数组列表进行排序的文章,但在所有示例中,人们都使用了,根据一些研究,这是一种用于字符串的方法。 我希望按照自定义对象的属性之一对其ArrayList进行排序:日期对象()。通常我会通过来比较它们,所以我想知道我是否可以写出如下内容:

  • 问题内容: 在React中,Component定义看起来像这样: 然后定义一个这样的组件: 现在我遇到的问题是,在React API 中应该使用 局部 状态对象来调用,该对象表示要更新的属性,如下所示: 请注意,未声明。我的问题是TypeScript不允许这样做,它给出了类似的赋值错误。据我了解,从这个意义上讲,定义是错误的。但是有解决方案吗? 我尝试了这个: 但这会产生相同的错误,即使它在Pla

  • 我想定义一个带有对象和不同类型的接口,例如 在定义上,没有问题,但在调用like后 这不起作用,并出现以下错误 错误错误:未捕获(promise中):TypeError:无法设置未定义的属性“名称”TypeError:无法设置未定义的属性“名称” 有一些相似的主题,但它们并不完全相关。(如何在类型脚本接口中定义对象或者如何在类型脚本中定义对象变量的类型?) 我很感激你帮助我找到解决办法。