有人可以向我解释为什么
(<any>window).dataLayer2 = (<any>window).dataLayer2 || [];
不会引发错误,并且
(<any>window).dataLayer = (<any>window).dataLayer || [];
确实会引发类型错误:"错误:无法解析'数据层'">
我需要能够访问谷歌分析全局变量,但不确定为什么这不起作用或如何为 ES6 公开它。
我正在使用 webpack 和打字稿,并将其添加到我的 index.ejs 中,如下所示:
<body aurelia-app="main">
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-okoko" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-ookok');
</script>
我正在使用TypeScript 2.9.2
打字.d.ts
interface Window { dataLayer: any; }
应用程序
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({...});
有关详细信息,请参阅以下其他答案:
如何在 TypeScript 中的"窗口"上显式设置新属性?
如何处理 TypeScript 中内置对象的专有/自定义属性的警告