1
resposta

Error :Type '{ setTasks: void; }' is not assignable to type 'IntrinsicAttributes & Dispatch<SetStateAction<IStudy[]>>'. Property 'setTasks' does not exist on type 'IntrinsicAttributes & Dispatch<SetStateAction<IStudy[]>>'

Recebo dois erros fazendo dessa forma e nao entendo, a interface esta certinha mas o typescript acusa esses erros: App:

function App() {
  const [tasks,setTasks] = useState<IStudy[] | []>([]);

  return (
    <div className={style.AppStyle}>
      <Form setTasks={setTasks(tasks)}/>
      <List tasks={tasks}/>
      <Timer />
    </div>
  );
}

form:

const Form = (setTasks : React.Dispatch<React.SetStateAction<IStudy[]>>)=> {

  const [study,setStudy] = useState('')
  const [timer,setTimer] = useState('')

  function addTask(event: React.FormEvent){
    event.preventDefault();
    setTasks((oldstudies) => {[...oldstudies, {oldstudies}]});
    console.log(study,timer)
  }
  return(
    <form className={style.newTask} onSubmit={addTask}>
      <div className={style.inputContainer}>
        <label htmlFor="task">
          Add your new study task
        </label>
        <input 
          type="text"
          name="task"
          id="task"
          value ={study}
          onChange = {e => setStudy(e.target.value)}
          placeholder="What do you want to study?"
          required
        />

      </div>
      .................... )}
1 resposta

Olá Lucas, tudo bem?

Desculpe a demora em retornar.

Pelo que entendi, você está tendo problemas com a tipagem do TypeScript em seu projeto React. O erro que está aparecendo indica que a propriedade "setTasks" não existe no tipo "IntrinsicAttributes & Dispatch<SetStateAction<IStudy[]>>".

Uma possível solução para esse problema é alterar a forma como você está passando a propriedade "setTasks" para o componente "Form". Em vez de passar "setTasks(tasks)", você pode passar apenas "setTasks".

Além disso, na função "addTask" do componente "Form", você está adicionando um objeto com a propriedade "oldstudies" dentro do array de tasks. Isso pode estar causando um erro. Você pode corrigir isso alterando a função para:

function addTask(event: React.FormEvent){
  event.preventDefault();
  setTasks((oldstudies) => [...oldstudies, {study, timer}]);
  console.log(study,timer)
}

Espero que essas alterações ajudem a resolver o problema.

Um abraço e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software