Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

202
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda