タスクのステータスを変更する関数
CoddyのJavaScriptジャーニー「Introduction To TypeScript」セクションの一部。レッスン 47/73。
チャレンジ
簡単前のチャレンジから、以下の内容が提供されています:
id(number)、title(string)、およびstatus(リテラル型) を持つTaskインターフェース- 3つのタスク変数:
firstTask、secondTask、およびthirdTask getTaskInfo関数addTask関数initialTasksおよびupdatedTasks配列
3つのパラメータを受け取る changeTaskStatus という名前の関数を作成してください:
Task[]型のtaskList(Taskオブジェクトの配列)number型のtaskId(更新するタスクのID)'todo' | 'in-progress' | 'done'型のnewStatus(タスクの新しいステータス)
この関数は以下の処理を行う必要があります:
- タスクリストの中から、一致するIDを持つタスクを見つける
- そのタスクのステータスを新しいステータスに更新する
- 更新されたタスクを含む新しい配列を返す(元の配列は変更しないでください)
- 指定されたIDのタスクが見つからない場合は、元の配列をそのまま返す
firstTask、secondTask、および thirdTask を含む、Task[] 型の testTasks という名前の変数を作成してください。
changeTaskStatus 関数を使用して、以下の操作を行ってください:
- IDが
1のタスクのステータスを'in-progress'に変更し、その結果をprogressTasksに保存する progressTasks内のIDが2のタスクのステータスを'done'に変更し、その結果をcompletedTasksに保存する
以下の出力を別々の行に表示してください:
testTasksの最初のタスクを引数にしてgetTaskInfoを呼び出し、その結果を出力するprogressTasksの最初のタスクを引数にしてgetTaskInfoを呼び出し、その結果を出力するcompletedTasksの2番目のタスクを引数にしてgetTaskInfoを呼び出し、その結果を出力するtestTasksの最初のタスクのステータスを出力するcompletedTasksの2番目のタスクのステータスを出力する
自分で試してみよう
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);Introduction To TypeScriptのすべてのレッスン
7プロジェクト:シンプルなタスクリスト
プロジェクト:Task構造体の定義タスクを追加する関数2基本の型
基本の型: str, num, boolean'any' 型: 脱出ハッチ'unknown' 型'null' と 'undef' の扱い型推論の実践明示的な型アノテーションまとめ:基本の型の演習5型:エイリアス、ユニオン型、インターセクション型
プリミティブ型の型エイリアスユニオン型 ('|')ユニオン型の扱い方リテラル型インターセクション型 ('&')型エイリアスの組み合わせまとめ:高度な型の組み合わせ自分で練習してみよう: TypeScriptプレイグラウンド