我通过显式设置属性来为我的对象设置全局命名空间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绝对可以包含任何东西.
我正在使用需要回调的Google Maps API。如何从Webpack捆绑包导出回调,以供外部脚本(例如Google Maps API)使用?
HTML(Xd输出键):
<div id="hello"></div>
<script src="/js/map.bundle.js"></script>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=XXXXXXXXXXX&callback=initMap"></script>
Run Code Online (Sandbox Code Playgroud)
map.js:
var $ = require("jquery");
function initMap() {
$("#hello").text("hello world");
}
Run Code Online (Sandbox Code Playgroud)
我将上述map.js文件构建到名为的webpack捆绑包中map.bundle.js。
浏览器控制台错误:
Yc消息:“ initMap不是函数”名称:“ InvalidValueError”堆栈:“在新Yc出现错误?(https://maps.googleapis.com/ma ...
我也尝试添加
module.exports = { initMap: initMap }
Run Code Online (Sandbox Code Playgroud)
到,map.js但这没有帮助。
编辑:同样的问题,但在表单事件中使用webpack捆绑中的javascript函数:
HTML:
<form onsubmit="sayHello(event)">
<button type="submit">Say Hello</button>
</form>
Run Code Online (Sandbox Code Playgroud)
JS:
function sayHello(e) {
e.preventDefault();
console.log("hello");
return false;
}
Run Code Online (Sandbox Code Playgroud)
当JS打包成一个包时,“ hello”不再打印在控制台上
我很感激现在已经多次询问它,但是我找不到解决它的方法并将带有 initMap 函数的脚本作为单独的文件加载。
让我解释:
我正在调用 Google Maps API:
<script src="https://maps.googleapis.com/maps/api/js?key=MYAPIKEY&callback=initMap" async
defer></script>
Run Code Online (Sandbox Code Playgroud)
其次是我捆绑的包含 initMap 函数的主 JS 文件。
<script src="/js/main.js"></script>
Run Code Online (Sandbox Code Playgroud)
我有标题中的错误。
我试图做的事情:
有效的是按照以下方式调用页面内的函数:
<script>
function initMap() {
//rest of the code
</script>
Run Code Online (Sandbox Code Playgroud)
并将其放在 api 调用之后。
我很欣赏这是控制台错误消息初始问题的解决方案,但我想从主 js 文件中启动并调用此函数,就像我对其余 JS 所做的一样。
任何帮助和解释,将不胜感激:) 谢谢
编辑 1 - 在下面添加更多代码并将函数移动到 main.js 文件的顶部
所以 main.js 现在看起来像 - webpack blob 开头,然后是:
function initMap() {
var uluru = { lat: 40.741895, lng: …Run Code Online (Sandbox Code Playgroud)