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

364
Views
Exportación ESM * excepto desde el módulo

Dado que tengo dos importaciones con muchas exportaciones con nombre (demasiadas para escribirlas todas) y quiero volver a exportarlas excepto algunas. En mi caso esto se debe a que chocan algunas exportaciones.

Como ejemplo de lo que quiero archivar, supongamos que tenemos dos archivos:

foo.js :

 export const a = 1; export const b = 2;

bar.js :

 export const b = 1; export const c = 3;

Si quiero agregarlos y volver a exportarlos usando CommonJS, podría hacer algo como esto:

 /* use rest destructuring to put everything except "b" into variable "foo" */ const { b, ...foo } = require("./foo"); const bar = require("./bar"); module.exports = { ...foo, ...bar };

Como estoy usando mecanografiado, lo más cerca que he estado es usar export = { ... } de manera similar:

 import * as foo from "./foo"; import * as bar from "./bar"; const { b, ...foo2 } = foo; export = { ...foo2, ...bar, };

Sin embargo, tengo entendido que esto creará un archivo con CommonJS module.exports en lugar de un módulo ESM adecuado (y probablemente requiera esModuleInterop ). Y es una construcción mecanografiada y no está disponible al escribir Vanilla JS.

¿Hay alguna forma de archivar esto mediante la import / export de ESM?

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

0

¿Hay alguna forma de archivar esto mediante la importación/exportación de ESM?

No, no en ESM estándar puro, no sin hacer lo que intenta evitar: enumerar las exportaciones nombradas. No existe el concepto de "descanso" en la import / export de ESM.

Creo que lo sabe, pero podría exportar un objeto con propiedades para a , b y c , pero eso es muy diferente de volver a exportar exportaciones con nombre. No sería un enlace en vivo, y la sintaxis para importar sus partes es diferente de importar exportaciones con nombre (a menos que se involucren herramientas en tiempo de compilación como TypeScript o empaquetadores, etc.).

Solo FWIW, así es como se ve (es muy similar a su versión de TypeScript cerca del final), pero no creo que sea lo que quiere:

reexport.js :

 import * as foo from "./foo.js"; import * as bar from "./bar.js"; const { b, ...restOfFoo } = foo; export default { ...restOfFoo, ...bar, };

Entonces usarlo es:

 // Import the object (which is the default export) import stuff from "./reexport.js"; // Destructure into local vars (optional, but...) const { a, b, c } = stuff; // Use it... console.log(a, b, c);

Eso es todo ESM estándar.

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!