TypeScriptУрок 16 из 16

Мини-проект: типизированный трекер задач

Финальный урок собирает всё вместе: интерфейс, объединение литералов, утилитарные типы и класс с приватным состоянием. Каркас готов — осталось дописать три метода.

Главное

  • Priority — объединение литералов, а не enum.
  • readonly id нельзя изменить после создания задачи.
  • NewTask = Omit<Task, "id" | "done">: эти поля трекер заполняет сам.
  • Record<Priority, number> задаёт порядок сортировки и не даст забыть приоритет.
  • private tasks: снаружи список меняется только через методы.

Пример

type NoteStatus = "todo" | "done"; interface Note {  readonly id: number;  text: string;  status: NoteStatus;} class NoteBook {  private notes: Note[] = [];   add(text: string): Note {    const note: Note = { id: this.notes.length + 1, text, status: "todo" };    this.notes.push(note);    return note;  }   finish(id: number): void {    const note = this.notes.find((item) => item.id === id);    if (note) note.status = "done";  }   count(status: NoteStatus): number {    return this.notes.filter((note) => note.status === status).length;  }} const book = new NoteBook();book.add("Buy milk");book.add("Call Sam");book.finish(1);console.log(`todo: ${book.count("todo")}, done: ${book.count("done")}`);

Пример — уменьшенная версия проекта: заметки со статусом, приватный массив и метод подсчёта. В задаче к этому добавляются сортировка по приоритету и статистика.

Задание

Как пользоваться редактором⌘ Enter или Ctrl Enter — запустить код, ⇧ ⌘ Enter — проверить задание.Tab и Shift Tab сдвигают строку или выделение; Esc, затем Tab — выйти из редактора.Проверка сравнивает то, что напечатала программа, с заданием; пробелы в конце строк не важны.После двух неудачных проверок можно открыть решение. Ваш код сохраняется в этом браузере.

Допишите complete, pending и stats. Вывод: «Complete #2: true», «Complete #9: false», затем незавершённые задачи по приоритету — «[high] Review PR», «[medium] Write README», «[low] Update icons» — и «Done: 1, open: 3».

Вывод

Здесь появится то, что напечатает программа.