javascript - Google Tag Manager dataLayer Typfel: ES6
Kan någon förklara för mig varför
(<any>window).dataLayer2 = (<any>window).dataLayer2 || [];
Kastar inte ett fel och
(<any>window).dataLayer = (<any>window).dataLayer || [];
Ger en typfel: "Fel: Kan inte lösa 'dataLayer'"
Jag behöver kunna få tillgång till Google Analytics globala variabel och är inte säker på varför detta inte fungerar eller hur jag ska exponera den för ES6.
Jag använder webpack och TypeScript och har lagt till det i min index.ejs på följande sätt:
<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>
Svar #1
Jag använder TypeScript 2.9.2
typningar.d.ts
interface Window { dataLayer: any; }
app.ts
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({...});
Se dessa andra svar för mer information:
Hur sätter man uttryckligen en ny egenskap på `window` i TypeScript?
Hur man hanterar varningar för proprietära/anpassade egenskaper hos inbyggda objekt i TypeScript
