Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

197
Vistas
¿Cómo puedo usar TypeScript para JavaScript cargado a través de una etiqueta de script?

Actualmente estoy incorporando TypeScript a un proyecto existente de Vue2/Nuxt (v2.15) y me encontré con un problema. En una página, traigomapbox-gl a través de CDN. Como está debajo del pliegue, lo cargo de forma perezosa a través de una etiqueta de secuencia de script que se crea una vez que el documento ha terminado de cargarse. Utilizo este enfoque para otros códigos de terceros en otros lugares.

 // helpers.ts export const onLoad = (callback: Function, delay = 1) => { if (document.readyState === "complete") { setTimeout(() => callback(), delay); } else { window.addEventListener("load", function() { setTimeout(() => callback(), delay); }) } }
 import {onLoad} from "./helpers"; export default ({ $config }) => { if ($config.environment === 'production') { onLoad(() => { const script = document.createElement('script') script.src = "https://api.mapbox.com/mapbox-gl-js/v2.7.0/mapbox-gl.js" document.getElementsByTagName('head')[0].appendChild(script) }) } }

Esto funciona bien, sin embargo, ahora estoy buscando incorporar TypeScript en la mezcla. El problema es que TypeScript no reconoce mapboxgl .

Las referencias a las propiedades de mapboxgl (por ejemplo, mapboxgl.accessToken ) están marcadas como un problema en mi IDE. Cuando paso el cursor por encima para ver los detalles del problema, obtengo:

 TS2304: Cannot find name 'mapboxgl'.

Intenté instalar @types/mapbox-gl a través de. npm i @types/mapbox-gl --save-dev , pero esto no resolvió el problema. Creo que este enfoque solo funciona si instalo mapbox-gl como una dependencia en el proyecto, lo cual quiero evitar. Prefiero cargar el código de terceros de forma perezosa a través de scripts.

Entonces, la pregunta es, ¿cómo puedo usar TypeScript para javascript cargado mediante una etiqueta de script?

EDITAR:

Creo que la pregunta/respuesta sugerida es útil, pero no responde completamente la pregunta específica que estoy haciendo. Declarar mapboxgl como una variable global suprimiría el error IDE, pero ¿cómo asigno esa declaración a los tipos proporcionados por @types/mapbox-gl ? Además, la pregunta/respuesta sugerida tiene el título "Crear una variable global en TypeScript". Creo que una respuesta más enfocada podría beneficiar a otros.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Crearía un archivo .d.ts y lo agregaría a sus tipos/typeRoots de tsconfig.json. Luego, importa el tipo de objeto mapboxgl global y lo declara en la ventana.

 // I dont know excact type name of mapboxgl so this is an example import {mapboxgl} from "mapboxgl"; interface Window { mapboxgl: mapboxgl; anotherCustomProperty: number; }

Entonces debería poder usar window.mapboxgl en su secuencia de comandos y hace referencia al tipo correcto.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda