En el ejemplo de la API de Javascript de Google Maps, veo que tenían algo como esto en el HTML:
<script type="module" src="./index.ts"></script>y una declaración de exportación vacía al final de los scripts TS/JS.
let map; function initMap() { map = new google.maps.Map(document.getElementById("map"), { center: { lat: -34.397, lng: 150.644 }, zoom: 8, }); } window.initMap = initMap; export {};No veo ningún ejemplo o mención de exportaciones vacías en MDN, así que me preguntaba si alguien sabía cómo funciona. ¿Cómo sabe el script que debe ejecutarlo si la exportación está vacía?
Esto parece algo en TypeScript ; no tiene nada que ver con JavaScript.
Si ocurre alguno de los casos a continuación, necesitará una import / export en el archivo.
El archivo TypeScript se está llamando con la bandera a continuación.
--isolatedModules El archivo tsconfig.json tiene la siguiente clave y valor.
{ "isolatedModules": true }Según typescriptlang.org , afirma:
Si se establece
isolatedModules, todos los archivos de implementación deben ser módulos (lo que significa que tiene alguna forma deimport/export). Se produce un error si algún archivo no es un módulo.
Si intenta ejecutar el archivo TypeScript con el indicador --isolatedModules , obtendrá un error como el siguiente.
'index.ts' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module. Como indica el error anterior, la forma más sencilla de solucionar el problema sin agregar declaraciones de import y/o declaraciones de export innecesarias es export un objeto vacío ( {} ), así.
export {}; En resumen, la export de objetos vacíos no hará nada en JavaScript (o TypeScript, sin el indicador --isolatedModules ). Sin embargo, resulta útil cuando se ejecuta con la bandera --isolatedModules .
El ejemplo de la API de JavaScript de Google Maps podría estar preparándose para este escenario, en caso de que alguien haya copiado y pegado el código, para que no reciba un error.