Menu
CoddyTech

Função para Alterar o Status da Tarefa

Parte da seção Introdução ao TypeScript do Journey de JavaScript da Coddy. Lição 47 de 73.

challenge icon

Desafio

Fácil

Você recebeu o seguinte do desafio anterior:

  • A interface Task com id (número), title (string) e status (tipo literal)
  • Três variáveis de tarefa: firstTask, secondTask e thirdTask
  • A função getTaskInfo
  • A função addTask
  • Os arrays initialTasks e updatedTasks

Crie uma função chamada changeTaskStatus que aceite três parâmetros:

  • taskList do tipo Task[] (um array de objetos Task)
  • taskId do tipo number (o ID da tarefa a ser atualizada)
  • newStatus do tipo 'todo' | 'in-progress' | 'done' (o novo status da tarefa)

A função deve:

  • Encontrar a tarefa com o ID correspondente na lista de tarefas
  • Atualizar o status dessa tarefa para o novo status
  • Retornar um novo array com a tarefa atualizada (não modifique o array original)
  • Se nenhuma tarefa com o ID informado for encontrada, retornar o array original sem alterações

Crie uma variável chamada testTasks do tipo Task[] contendo firstTask, secondTask e thirdTask.

Use sua função changeTaskStatus para:

  • Alterar o status da tarefa com o ID 1 para 'in-progress' e armazenar o resultado em progressTasks
  • Alterar o status da tarefa com o ID 2 para 'done' em progressTasks e armazenar o resultado em completedTasks

Imprima as seguintes saídas em linhas separadas:

  • Chame getTaskInfo com a primeira tarefa de testTasks e imprima o resultado
  • Chame getTaskInfo com a primeira tarefa de progressTasks e imprima o resultado
  • Chame getTaskInfo com a segunda tarefa de completedTasks e imprima o resultado
  • Imprima o status da primeira tarefa em testTasks
  • Imprima o status da segunda tarefa em completedTasks

Experimente você mesmo

interface Task {
  id: number;
  title: string;
  status: 'todo' | 'in-progress' | 'done';
}

const firstTask: Task = {
  id: 1,
  title: "Learn TypeScript interfaces",
  status: 'todo'
};

const secondTask: Task = {
  id: 2,
  title: "Build task management app",
  status: 'in-progress'
};

const thirdTask: Task = {
  id: 3,
  title: "Write unit tests",
  status: 'done'
};

function getTaskInfo(task: Task): string {
    return `Task ${task.id}: ${task.title} - ${task.status}`;
}

function addTask(taskList: Task[], title: string): Task[] {
  const newTask: Task = {
    id: taskList.length + 1,
    title: title,
    status: 'todo'
  };
  return [...taskList, newTask];
}

const initialTasks: Task[] = [firstTask, secondTask];

const updatedTasks: Task[] = addTask(initialTasks, "Review code changes");

console.log(initialTasks.length);
console.log(updatedTasks.length);
console.log(getTaskInfo(updatedTasks[updatedTasks.length - 1]));
console.log(updatedTasks[updatedTasks.length - 1].title);
console.log(updatedTasks[updatedTasks.length - 1].status);

Todas as lições de Introdução ao TypeScript

Pratique por conta própria: Playground de TypeScript