-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTask.ts
More file actions
40 lines (36 loc) · 784 Bytes
/
Task.ts
File metadata and controls
40 lines (36 loc) · 784 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
export class Task {
private static idCounter = 1;
public readonly id: number;
public status: "pending" | "done";
constructor(
public title: string,
public dueDate: Date,
public priority: "low" | "medium" | "high"
) {
this.id = Task.idCounter++;
this.status = "pending";
}
markAsDone(): void {
this.status = "done";
}
static setNextId(id: number): void {
Task.idCounter = id;
}
editTask(
updates: Partial<{
title: string;
dueDate: Date;
priority: "low" | "medium" | "high";
}>
): void {
if (updates.title) {
this.title = updates.title;
}
if (updates.dueDate) {
this.dueDate = updates.dueDate;
}
if (updates.priority) {
this.priority = updates.priority;
}
}
}