Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Dúvida do projeto AluraTracker - DefineComponent

Pessoal, No desenvolvimento do meu projeto AluraTracker, cheguei na parte de criar o for para o "tarefa", surgiu este erro A749: 'ITarefa' refers to a value, but is being used as a type here. Did you mean 'typeof ITarefa'?"após eu arrumar nas linhas do App.vue incluindo o typeof -> tarefas: [] as typeof ITarefa[] e salvarTarefa (tarefa: typeof ITarefa) , surgiu outro erro no mesmo App.vue dentro do for no :tarefa="tarefa" com o seguinte erro Type 'DefineComponent<{}, {}, any>' is not assignable to type 'ITarefa'. Segue tela abaixo, não estou conseguindo arrumar a propriedade tarefa, mas ela foi declarada e vou postar os códigos Insira aqui a descrição dessa imagem para ajudar na acessibilidadeApp.vue

<template>
  <main class="columns is-gapless is-multiline">
    <div class="column is-one-quarter">
      <BarraLateral />
    </div>
    <div class="column is-three-quarter">
      <Formulario @aoSalvarTarefa="salvarTarefa"/>
      <div class="lista">
        <Tarefa v-for="(tarefa, index) in tarefas" :key="index" :tarefa="tarefa"/>
          <Box v-if="listaEstaVazia">
            Você não esta muito produtivo hoje :(
          </Box>
      </div>
    </div>
  </main>
</template>

<script lang="ts">
import { defineComponent } from 'vue';
import BarraLateral from './components/BarraLateral.vue';
import Formulario from './components/Formulario.vue';
import ITarefa from './interfaces/ITarefa.vue';
import Box from  './components/Box.vue';
import Tarefa from './components/Tarefa.vue';

export default defineComponent({
    name: 'App',
    components: { BarraLateral, Formulario, Tarefa, Box },
    data () {
      return {
        // eslint-disable-next-line no-undef
        tarefas: [] as typeof ITarefa[]
      }
    },
    computed: {
      listaEstaVazia () : boolean {
        return this.tarefas.length === 0
      }
    },
    methods: {
      
      salvarTarefa (tarefa: typeof ITarefa){
        this.tarefas.push(tarefa)
      }
    }
});
</script>

<style>
.lista{
  padding: 1.25rem;
}
</style>

Tarefa.vue

<template>
    <Box>
        <div class="columns">
            <div class="column is-7"> 
                {{ tarefa.descricao || 'Tarefa sem descrição'}}
            </div>
            <div class="column"> 
                <Cronometro :tempoEmSegundos="tarefa.duracaoEmSegundos" />
            </div>
        </div>
    </Box>
</template>

<script lang="ts">

import { defineComponent, PropType } from 'vue';
import Cronometro from './Cronometro.vue';
import ITarefa from '../interfaces/ITarefa';
import Box from './components/Box.vue';

export default  defineComponent({
    // eslint-disable-next-line vue/multi-word-component-names
    name: "Tarefa",
    components: {
        Cronometro, Box
    },
    props: {
        tarefa: {
            type: Object as PropType<ITarefa>,
            required: true
        }
    }
});

</script>

ITarefa.vue

export default interface ITarefa {
    duracaoEmSegundos: number,
    descricao: string
}

Quem puder compartilhar se teve o mesmo problema e como resolver, fico no aguardo.

2 respostas
solução!

Olá, Leandro!

Notei algumas diferenças entre o seu código e o que foi discutido na aula. Após revisar o código fornecido, não consegui encontrar uma solução imediata. Recomendo que você compare seu código com o exemplo apresentado na aula. Se o problema persistir, ficaria grato se você pudesse compartilhar o link do seu projeto no GitHub ou uma pasta com todos os arquivos utilizados no Google Drive. Isso me ajudará a entender melhor o contexto e a oferecer uma assistência mais eficaz.

Lembre-se que, se enviar os arquivos por meio do Google Drive, é necessário conceder permissão para que eu possa ter acesso.

Reforço que em casos de dúvidas, conte sempre com o fórum da comunidade Alura! Bons estudos!

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Eu consegui arrumar simplesmente comparando o Tarefa.vue seu com o meu código, estavam iguais, copiei seu código no meu e o erro acabou, daí só arrumei mais outro do Box.vue com caminho errado e deu certo, sinceramente não sei o que era e como resolver, possível coisa de TypeScript, mas valeu.