Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

207
Views
No hay declaraciones escritas para el archivo TypeScript que no exporta nada

Actualmente estoy escribiendo mi código en TypeScript y no estoy usando una biblioteca como Webpack para agrupar el código. Establecí el indicador de declaration en true en mi tsconfig.json para pedirle a TypeScript que genere declaraciones para el código. Estoy haciendo una clase accesible en el objeto de la window para que la usen scripts externos, y actualmente lo estoy haciendo con el siguiente código ( Foo.ts ):

 (() => { class Foo { // ... } (window as any).Foo = Foo; })();

Cuando se transpila a JavaScript, esto funciona y la clase Foo se puede encontrar en el objeto de la window . Sin embargo, el archivo de declaración ( Foo.d.ts ) no contiene nada.

Supuse que esto se debía a que el archivo no estaba exportando nada, así que cambié el código para exportar la variable (y lo coloqué en el nivel superior en lugar de en un cierre) y funcionó. Sin embargo, específicamente para mi caso de uso, no tenía sentido "exportar" una variable cuando el script se iba a cargar en el navegador (por supuesto, a menos que usara algo como Webpack).

Hasta ahora, esto me impide hacer referencia al tipo de clase en las pruebas de integración. No puedo simplemente declare la variable para su uso, ya que requeriría escribir mi propio archivo d.ts (lo que anula el propósito de usar TypeScript) ni puedo declararlo a la mitad de mi archivo Foo.ts existente ya que TypeScript no permite declare que no son de nivel superior. No tendría sentido para mí agregar un paquete web a la cadena de herramientas y agregar más volumen a un pequeño script que tampoco usa dependencias.

De hecho, me encontré con este mismo problema al tratar de obtener tipos para oojs-ui , que hace lo mismo. Desafortunadamente, no estoy tan interesado en simplemente configurar window.Foo en any de mis pruebas y espero lo mejor.

¿Cómo puedo hacer que TypeScript emita la declaración para la clase Foo sin necesidad de una declaración de export ? En otras palabras, ¿cómo puedo agregar declaraciones de exportación de TypeScript para una clase a la variable de window ?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Sospecho que lo que te estás perdiendo es el aumento de módulos en el espacio de nombres global. Si agrega su definición de clase de la manera descrita en esta respuesta , ¿resuelve su problema?

Algo así como un patio de recreo

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!