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
JavaScript: ¿Cómo inicializar un objeto de clase con la nueva palabra clave en un mapeador fuera de la clase?

Tengo una aplicación de consola simple con algunas pruebas. Todo lo que estoy probando es verificar que el juego comience con el nivel 1. Si el nivel actual es 2, el siguiente debería ser 3, etc. El siguiente código funciona bien, pero quería mover la función gameMapper a su propio archivo e importarlo. dentro de Game.js .

Juego.js

 export default class Game { constructor(level) { this.level = level; } static start = () => new Game(1); getNextLevel = () => gameMapper.find((g) => g.level === this.level).nextLevel; } const gameMapper = [ { level: 1, nextLevel: new Game(2) }, { level: 2, nextLevel: new Game(3) }, { level: 3, nextLevel: new Game(4) }, ];

muestra.prueba.js

 import Game from '../src/Game'; describe('Test Game levels', () => { test('Game should start from level 1', () => { const game = Game.start(); expect(game.level).toBe(1); }); test('When game level is 2, the next level should be 3', () => { const game = Game.start().getNextLevel().getNextLevel(); expect(game.level).toBe(3); }); });

El código anterior funciona completamente bien. Probé las siguientes soluciones, pero no parecían funcionar para mí. Si alguien conoce alguna solución mejor, por favor hágamelo saber.

  • Simplemente moviendo la función gameMapper a su propio archivo. Recibo este error TypeError: _Game.default is not a constructor
  • Luego agrego la función init a la clase Game que requiere el argumento level e inicializa la clase Game con ese nivel. Pero me sale otro error como se explica a continuación.

archivo gameMapper.js

 import Game from './Game'; export const gameMapper = [ { level: 1, nextLevel: Game.init(2) }, { level: 2, nextLevel: Game.init(3) }, { level: 3, nextLevel: Game.init(4) }, ];

archivo Game.js actualizado

 import { gameMapper } from './gameMapper'; export default class Game { static init = (level) => new Game(level); getNextLevel = () => gameMapper.find((g) => g.level === this.level).nextLevel; }

Cuando hago lo anterior, donde muevo el gameMapper y lo importo al archivo Game.js , aparece el siguiente error en gameMapper.js .

TypeError: Cannot read properties of undefined (reading 'init') en { level: 1, nextLevel: Game.init(2) }

Espero que las pruebas aún pasen cuando saque el mapeador.

Gracias a todos por su valioso tiempo :)

about 4 years ago · Juan Pablo Isaza
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