VSCode上的Typescript - 在窗口对象上声明一个属性[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我们将Typescript项目(React)嵌入到我们的网页中。在某些情况下,我们还需要允许我们的Typescript代码与页面上的其他元素进行通信。

例如,我们想要一个链接来打开React-Typescript组件,反之亦然,为React组件中的按钮打开一个基于jquery的模式。

出于这些目的,我们在window对象上创建了一个对象。

window.gwFunctions = {
   openModal: ()=>{
      codeToOpenModal
   }
}

VSCode在看到window.gwFunctions时抱怨

Property 'TS_FUNCTIONS' does not exist on type 'Window'.ts(2339)

它表明可能修复declare property gwFunctions。选择此选项将通过在lib.dom.d.ts中的窗口界面上声明此属性来解决此问题。唯一的问题是该文件位于C:\Program Files\Microsoft VS Code\resources\app\extensions\node_modules\typescript\lib\lib.dom.d.ts中,由所有项目/工作区共享。

是否可以仅在当前项目/工作区中声明此属性?

typescript visual-studio-code
1个回答
0
投票

您可以通过将其放入TypeScript文件中来添加到窗口类型定义。

declare global {
    interface Window {
        gwFunctions: {
            [key: string]: () => void;
        }
    }
}

lib.dom.d.ts文件中的类型声明将与您定义的类型声明合并。 Here is the official documentation on declaration merging in the TypeScript handbook.

© www.soinside.com 2019 - 2024. All rights reserved.