TypeScriptLección 16 de 16

Miniproyecto: un gestor de tareas tipado

La última lección lo junta todo: una interfaz, una unión de literales, tipos utilitarios y una clase con estado privado. El esqueleto está listo y quedan tres métodos por escribir.

Lo esencial

  • Priority es una unión de literales, no un enum.
  • readonly id no puede cambiar una vez creada la tarea.
  • NewTask = Omit<Task, "id" | "done">: esos campos los rellena el gestor.
  • Record<Priority, number> fija el orden y no deja olvidar ninguna prioridad.
  • private tasks: desde fuera, la lista solo cambia a través de los métodos.

Ejemplo

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")}`);

El ejemplo es una versión reducida del proyecto: notas con estado, un array privado y un método para contar. El ejercicio añade el orden por prioridad y las estadísticas.

Tarea

Cómo usar el editor⌘ Enter o Ctrl Enter ejecuta el código, ⇧ ⌘ Enter comprueba la tarea.Tab y Mayús Tab sangran la línea o la selección; Esc y luego Tab sale del editor.La comprobación compara lo que imprimió el programa con la tarea; los espacios al final de línea no cuentan.Tras dos comprobaciones fallidas puedes ver la solución. Tu código se guarda en este navegador.

Completa complete, pending y stats. Salida: «Complete #2: true», «Complete #9: false», luego las tareas abiertas por prioridad —«[high] Review PR», «[medium] Write README», «[low] Update icons»— y «Done: 1, open: 3».

Salida

Aquí aparecerá lo que imprima el programa.