export type TaskInput = Omit<Task, "id" | "createdAt">; import Task from "./types.js"; export function validateTaskTitle(title: string): boolean return title.trim().length > 0 && title.length <= 100;
this.tasks.push(newTask); return newTask; pure ts
addTask(input: TaskInput): Task if (!validateTaskTitle(input.title)) throw new Error("Invalid task title"); export type TaskInput = Omit<
// ----- CLI Demo ----- const manager = new TaskManager(); "id" | "createdAt">
updateStatus(id: number, status: TaskStatus): Task
pure-ts-demo/ ├── src/ │ ├── index.ts │ ├── types.ts │ └── utils.ts ├── dist/ (generated) ├── package.json ├── tsconfig.json └── .gitignore 5. Add scripts to package.json "scripts": "build": "tsc", "start": "node dist/index.js", "dev": "tsc --watch & nodemon dist/index.js"
const newTask: Task = id: this.nextId++, title: input.title, status: input.status, createdAt: new Date(), ;