← Каталог
Простые приложения на TypeScript — Цель
Фрагмент из «Простые приложения на TypeScript»: Цель.
export type Todo = {
id: number;
title: string;
done: boolean;
};
const todos: Todo[] = [];
export function addTodo(title: string): Todo {
const todo: Todo = {
id: Date.now(),
title: title.trim(),
done: false,
};
if (!todo.title) throw new Error("title required");
todos.push(todo);
return todo;
}
export function completeTodo(id: number): Result<"ok" | "not-found"> {
const todo = todos.find((t) => t.id === id);
if (!todo) return { ok: false, error: "not-found" };
todo.done = true;
return { ok: true, value: "ok" };
}
type Result<T, E = string> =
| { ok: true; value: T }
| { ok: false; error: E };
export function listTodos(): readonly Todo[] {
return todos;
} export type Todo = {
id: number;
title: string;
done: boolean;
};
const todos: Todo[] = [];
export function addTodo(title: string): Todo {
const todo: Todo = {
id: Date.now(),
title: title.trim(),
done: false,
};
if (!todo.title) throw new Error("title required");
todos.push(todo);
return todo;
}
export function completeTodo(id: number): Result<"ok" | "not-found"> {
const todo = todos.find((t) => t.id === id);
if (!todo) return { ok: false, error: "not-found" };
todo.done = true;
return { ok: true, value: "ok" };
}
type Result<T, E = string> =
| { ok: true; value: T }
| { ok: false; error: E };
export function listTodos(): readonly Todo[] {
return todos;
}