Функция для изменения статуса задачи
Часть раздела Введение в TypeScript путешествия по JavaScript на Coddy. Урок 47 из 73.
Задание
ЛегкоВам предоставлены следующие элементы из предыдущего задания:
- Интерфейс
Taskс полямиid(number),title(string) иstatus(литеральный тип) - Три переменные задач:
firstTask,secondTaskиthirdTask - Функция
getTaskInfo - Функция
addTask - Массивы
initialTasksиupdatedTasks
Создайте функцию с именем changeTaskStatus, которая принимает три параметра:
taskListтипаTask[](массив объектов Task)taskIdтипаnumber(ID задачи, которую нужно обновить)newStatusтипа'todo' | 'in-progress' | 'done'(новый статус для задачи)
Функция должна:
- Найти задачу с соответствующим ID в списке задач
- Обновить статус этой задачи на новый статус
- Вернуть новый массив с обновленной задачей (не изменяйте исходный массив)
- Если задача с заданным ID не найдена, вернуть исходный массив без изменений
Создайте переменную с именем testTasks типа Task[], содержащую firstTask, secondTask и thirdTask.
Используйте вашу функцию changeTaskStatus, чтобы:
- Изменить статус задачи с ID
1на'in-progress'и сохранить результат вprogressTasks - Изменить статус задачи с ID
2на'done'вprogressTasksи сохранить результат вcompletedTasks
Выведите следующие результаты на отдельных строках:
- Вызовите
getTaskInfoс первой задачей изtestTasksи выведите результат - Вызовите
getTaskInfoс первой задачей изprogressTasksи выведите результат - Вызовите
getTaskInfoсо второй задачей изcompletedTasksи выведите результат - Выведите статус первой задачи в
testTasks - Выведите статус второй задачи в
completedTasks
Попробуйте сами
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);Все уроки раздела Введение в TypeScript
1Начало работы с TS
Что такое TypeScript?Зачем использовать TypeScript?Ваш первый код на TypeScriptПроцесс компиляции и ошибкиИтоги: Введение в TS4Работа с функциями
Типизация параметров и возвращаемых значенийТипизация стрелочных функцийТип возвращаемого значения 'void'Необязательные параметры с '?'Значения параметров по умолчаниюТипизация Rest-параметровОпределение типов функцийИтоги: Создание типизированных функций7Проект: Простой список задач
Проект: Определение структуры TaskФункция для добавления задачи2Основные типы
Базовые типы: str, num, booleanТип 'any': лазейкаТип 'unknown'Работа с 'null' и 'undef'Вывод типов в действииЯвные аннотации типовИтоги: Практика по основным типам5Типы: псевдонимы, объединения и пересечения
Псевдонимы типов для примитивовТипы объединения ('|')Работа с типами объединенияЛитеральные типыТипы пересечения ('&')Комбинирование псевдонимов типовИтоги: продвинутые комбинации типов3Структуры данных: массивы и кортежи
Типизированные массивыМодификатор 'readonly' для массивовЧто такое кортеж?Объявление кортежей и доступ к нимДеструктуризация кортежейКортежи readonlyМногомерные типизированные массивыОператор spread с массивамиИтоги: массивы и кортежиПотренируйтесь самостоятельно: Песочница TypeScript