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

192
Views
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
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!