【发布时间】:2019-03-14 20:27:42
【问题描述】:
我们将 Typescript 项目 (React) 嵌入到我们的网页中。在某些情况下,我们也需要允许我们的 Typescript 代码与页面上的其他元素进行通信。
例如,我们想要一个打开 React-Typescript 组件的链接,反之亦然,为 React 组件中的按钮打开一个基于 jquery 的模式。
出于这些目的,我们在窗口对象上创建了一个对象。
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 中,由所有项目/工作区共享。
是否可以仅在当前项目/工作区上声明此属性?
【问题讨论】:
-
为什么不使用
window['gwFunctions'] = ...并以同样的方式访问var bla = window['gwFunctions'];? -
jep 这听起来是正确的@Silvermind .. 如果你定义一些全局的东西它是全局的,比如 localstorage。如果你想处理限制,你必须创建一个包含所有数据的对象,然后你需要处理数据和访问的函数。即:window.sharedData = { namespace: 'mynamespace', values: [] } 现在您可以编写一些处理限制的访问器
标签: typescript visual-studio-code