这个问题在这里已有答案:
我们将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文件中来添加到窗口类型定义。
declare global {
interface Window {
gwFunctions: {
[key: string]: () => void;
}
}
}
lib.dom.d.ts文件中的类型声明将与您定义的类型声明合并。 Here is the official documentation on declaration merging in the TypeScript handbook.