Hola a todos,
Estoy luchando tratando de encontrar una manera de resolver el siguiente problema:
Lo he intentado creando un nuevo proyecto donde
Tengo un archivo "a.ts" donde estoy haciendo todas las importaciones que necesito y exporto una clase
/// <reference path="../MyOldLib.d.ts" /> import * as AAA from 'ExternalComponentINeed'; export class XXX extends IJKW{ constructor() { super(); ... } ... }donde IJK es el espacio de nombres como en la biblioteca anterior y W es una clase base que necesito ampliar
Tengo el archivo "b.ts" que importa el "a.ts" como:
import * as A_ from "./A"; declare global { namespace IJK { export import A = A_; } }Al final tengo el último archivo c.ts que declara el espacio de nombres
namespace IJK { // Force `IJK` to be created at runtime. (() => {})(); }Estoy usando webpack para construir todo junto con este archivo de configuración:
const path = require('path'); module.exports = { entry: ['./src/c.ts','./src/b.ts'], module: { rules: [ { test: /\.tsx?$/, exclude: [/node_modules/], use: 'ts-loader', }, ], }, resolve: { extensions: ['.tsx', '.ts', '.js'], }, node: {global: true}, output: { library: 'mylibrary', libraryTarget: 'umd', filename: 'mylibrary.js', libraryExport: 'default', auxiliaryComment: 'Test Comment', path: path.resolve(__dirname, 'dist'), }, };De esta manera puedo generar un archivo d.ts que puedo usar en el proyecto anterior, todo se compila pero en el navegador no funciona y emite lo siguiente:
Uncaught TypeError: Cannot read properties of undefined (reading 'A')y aquí está el punto donde se rompe el código:
class c extends IJKW --> I is not definedSabemos que no es un buen camino a seguir, pero necesitamos un parche. Estamos planeando refactorizar nuestras bibliotecas, pero no podemos dejar de desarrollar y también nos gustaría tener una forma de refactorizar las bibliotecas poco a poco.
Cualquier ayuda sería muy apreciada. Gracias