VSCode上的Typescript-在window对象上声明一个属性

时间:2019-03-14 11:29:03

标签: typescript visual-studio-code

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

例如,我们想要一个链接来为React组件中的按钮打开React-Typescript组件,反之亦然,以打开基于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中,该文件由所有项目/工作区共享。

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

1 个答案:

答案 0 :(得分:0)

您可以通过将其放置在TypeScript文件中来添加到Window类型定义。

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

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