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

132
Visualizações
Track typescript Class property in vuejs3 components

I'm making a web game with typescript in Vuejs3 but I'm struggling to make my typescript class properties reactive in my .vue components.

I've simplified the class to make it clearer.

Game.ts:

import { Clock } from "@/modules/Clock";

export class Game {
  public clock: Clock;

  constructor() {
    this.clock = new Clock(60);
  }
}

Clock.ts:

export class Clock {
  private _updateTimeRequest = 0;

  public initialTime: number;
  public timeLeft: number;

  constructor(startTime: number) {
    this.initialTime = startTime;
    this.timeLeft = startTime;

    this.start();
  }

  private updateTime(): void {
    this.timeLeft--;

    if (this.timeLeft <= 0) {
      this.stop();
    }
  }

  public start() {
    this.timeLeft = this.initialTime;

    this._updateTimeRequest = setInterval(this.updateTime.bind(this), 1000);
  }

  public stop() {
    clearInterval(this._updateTimeRequest);
  }
}

GameView.vue:

import GameClock from "@/components/GameClock.vue";

import { Game } from "@/modules/Game";
import { provide, ref } from "vue";

let game = ref(new Game());

provide("game", game);
</script>

<template>
  <div>
    <GameClock />
  </div>
</template>

<style scoped></style>

GameClock.vue:

<script setup lang="ts">
import { computed, inject } from "vue";

const game = inject("game");

const timeLeft = computed(() => {
  return game.value.clock.timeLeft;
});
</script>

<template>
  <div>
    <span>{{ timeLeft }}</span>
  </div>
</template>

<style scoped></style>

So the question is, how do I make my timeLeft property reactive so it can display the countdown of the game.clock instance ?

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