相关疑难解决方法(0)

如何在TypeScript中的`window`上显式设置新属性?

我通过显式设置属性来为我的对象设置全局命名空间window.

window.MyNamespace = window.MyNamespace || {};
Run Code Online (Sandbox Code Playgroud)

TypeScript强调MyNamespace并抱怨:

属性'MyNamespace'在'window'类型的值上不存在任何"

我可以通过声明MyNamespace为环境变量并删除window显式来使代码工作,但我不想这样做.

declare var MyNamespace: any;

MyNamespace = MyNamespace || {};
Run Code Online (Sandbox Code Playgroud)

我怎样才能window留在那里让TypeScript开心?

作为旁注,我发现TypeScript抱怨特别有趣,因为它告诉我这种window类型any绝对可以包含任何东西.

typescript

502
推荐指数
25
解决办法
27万
查看次数

从全局范围调用 Svelte 组件的函数

我正在创建一个 Sapper 页面,我想在其中使用Google Sign-in button。它需要data-onsuccess属性来指定回调函数。根据我从 Google 的平台 JS 库中发现的内容,它在 global/window范围内查找函数。

有没有办法从全局网页范围访问/调用 Svelte 的组件功能?它可能用于与无法直接加载import到组件中的外部库的互操作。

我正在尝试做的示例:

<script>
  function onSignComponent(user){
    console.log('Signed in');
  }
</script>

<div id="login" class="g-signin2" data-onsuccess="{onSignComponent}" data-theme="dark" />
Run Code Online (Sandbox Code Playgroud)

这项工作onSignComponent在全局范围内时有效,但在组件范围内时无效。

javascript google-signin svelte sapper

5
推荐指数
2
解决办法
3024
查看次数

React:Google“一键”回调函数未被调用

<script src="https://accounts.google.com/gsi/client"></script>\n...\ndeclare var google: any;\n...\n\n  useEffect(() => {\n    const handleCredentialResponse = (response: any) => {\n      console.log(response);\n    };\n    const client_id = process.env.REACT_APP_GOOGLE_CLIENT_ID;\n    const callback = handleCredentialResponse;\n    const auto_select = true;\n    google.accounts.id.initialize({ client_id, callback, auto_select });\n    google.accounts.id.prompt((notification: any) => {\n      console.log(notification);\n    });\n  }, []);\n
Run Code Online (Sandbox Code Playgroud)\n\n

为什么handleCredentialResponse根本不被调用?系统会提示用户登录,他们点击继续,然后该函数永远不会被调用!咕噜!以上摘自此处和此处的文档

\n\n

注销notification

\n\n
nl\xc2\xa0{g: "display", h: true}\nnl\xc2\xa0{g: "skipped", l: "issuing_failed"}\n
Run Code Online (Sandbox Code Playgroud)\n

google-oauth reactjs

5
推荐指数
1
解决办法
2636
查看次数