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

Erro de tipagem

Olá galera, estou com um erro de tipagem, nessa props tarefas que estou enviando para o Lista é onde está o erro. a mensagem de erro é a seguinte "O tipo 'ITarefa[]' não tem as propriedades a seguir do tipo 'ITarefa': tarefa, tempo, selecionado, completado, id", quando tiro os colchetes ele pora de dar o erro porem da erro na propos do formulario.

function App() {
  const [tarefas, setTarefas] = useState<ITarefa[]>([]);
  const [selecionado, setSelecionado] = useState<ITarefa>();

  function selecionaTarefa(tarefaSelecionada: ITarefa){
    setSelecionado(tarefaSelecionada);
  }
  return (
    <div className={style.AppStyle}>
      <Formulario setTarefas={setTarefas}/>
      <Lista 
      tarefas={tarefas}
      selecionaTarefa={selecionaTarefa}
      />
      <Cronometro/>
    </div>
  );
}

Interface da tipagem ITarefa

export interface ITarefa {
    tarefa: string,
    tempo: string,
    selecionado: boolean,
    completado: boolean,
    id: string
  }
9 respostas

Bom dia, Fernando De Souza ! Tudo bem? Não identifiquei o erro apenas olhando o código que você compartilhou. Já verificou se as importações de ITarefa estão corretas? Caso seja possível, por gentileza, poderia compartilhar com a gente uma imagem do seu código e arquivos?

Olá Nilton Obrigado por me ajudar.

Mensagem de erro

"Compiled with problems:X

ERROR in src/components/Lista/index.tsx:15:26

TS2339: Property 'map' does not exist on type 'ITarefa'. 13 |

Estudos do dia

14 |
  • 15 | {tarefas.map((item)=>( | ^^^ 16 | <Item 17 | selecionaTarefa={selecionaTarefa} 18 | key={item.id}

    ERROR in src/components/Lista/index.tsx:15:31

    TS7006: Parameter 'item' implicitly has an 'any' type. 13 |

    Estudos do dia

    14 |
    • 15 | {tarefas.map((item)=>( | ^^^^ 16 | <Item 17 | selecionaTarefa={selecionaTarefa} 18 | key={item.id}

      ERROR in src/pages/App.tsx:19:7

      TS2739: Type 'ITarefa[]' is missing the following properties from type 'ITarefa': tarefa, tempo, selecionado, completado, id 17 | 18 | <Lista

      19 | tarefas={tarefas} | ^^^^^^^ 20 | selecionaTarefa={selecionaTarefa} 21 | /> 22 | "

      **Segue todo o código do arquivo app.tsx. **
      `

      import React, { useState } from 'react'; import Cronometro from '../components/Cronometro'; import Formulario from '../components/Formulario'; import Lista from '../components/Lista'; import { ITarefa } from '../types/tarefa'; import style from'./App.module.scss';

      function App() { const [tarefas, setTarefas] = useState<ITarefa[]>([]); const [selecionado, setSelecionado] = useState();

      function selecionaTarefa(tarefaSelecionada: ITarefa){ setSelecionado(tarefaSelecionada); } return (

      ); }

      export default App; `

      **Arquivo index.tsx da pasta Lista**
      `

      import { ITarefa } from "../../types/tarefa"; import Item from "./item"; import style from './Lista.module.scss';

      interface Props { tarefas: ITarefa, selecionaTarefa: (tarefaSelecionada: ITarefa) => void }

      function Lista({ tarefas, selecionaTarefa }: Props){ return(

      Estudos do dia

      • {tarefas.map((item)=>( <Item selecionaTarefa={selecionaTarefa} key={item.id} {...item} /> ))}
      ) }

      export default Lista;`

      **E o arquivo da interface ITarefa**
      `
      export interface ITarefa {
      tarefa: string,
      tempo: string,
      selecionado: boolean,
      completado: boolean,
      id: string

      }`

Conseguiu resolveu o problema?

Não Neilton, fiz uma bagunça aqui. Peço desculpa. vou mandar as imagem como você sugeriu. pode ser assim?

Pode sim.

Imagem do código da Interface Insira aqui a descrição dessa imagem para ajudar na acessibilidade Imagem do arquivo index.tsx da pasta lista, contem 2 erros Insira aqui a descrição dessa imagem para ajudar na acessibilidade Imagem do arquivo app.tsx Insira aqui a descrição dessa imagem para ajudar na acessibilidade Imagem do erro. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Tenta alterar o arquivo index.tsx do componente de lista.

Onde tem:

interface Props {
  tarefas: ITarefas;
  selecionaTarefa: (tarefaSelecionada: ITarefas) => void;
}

Substitua por

interface Props {
  tarefas: ITarefas[];
  selecionaTarefa: (tarefaSelecionada: ITarefas) => void;
}

pois o tarefas recebe um array de tarefas. Por isso o map() não está executando. Veja se isso resolve o problema!

Deu certo Neilton, muito obrigado. Desculpa essa confusão

Tranquilo! Fico feliz que tenha conseguido :) Bons estudos, e se precisar pode deixar sua dúvida no fórum que assim que possível tentamos te ajudar! Abraços