AzLearn

تمرين إعادة البناء

Event Scheduler

أعد كتابة مجدول أحداث TypeScript يرتب المواعيد ويحفظ حالتها.

typescript ~15 دقيقة متوسط
أعد بناء الكود Rebuild

هذا هو الكود. اكتبه بنفسك.

الكود المرجعي
type EventStatus = "scheduled" | "cancelled" | "done";

interface CalendarEvent {
  id: number;
  title: string;
  startsAt: Date;
  status: EventStatus;
}

function sortEvents(events: CalendarEvent[]): CalendarEvent[] {
  return [...events].sort((left, right) => left.startsAt.getTime() - right.startsAt.getTime());
}

function upcomingEvents(events: CalendarEvent[], now: Date): CalendarEvent[] {
  return sortEvents(events).filter((event) => event.status === "scheduled" && event.startsAt >= now);
}

function describeEvent(event: CalendarEvent): string {
  return `${event.title} at ${event.startsAt.toISOString()} (${event.status})`;
}

const events: CalendarEvent[] = [
  { id: 1, title: "Write drills", startsAt: new Date("2026-04-27T09:00:00Z"), status: "done" },
  { id: 2, title: "Review TypeScript", startsAt: new Date("2026-04-27T12:00:00Z"), status: "scheduled" },
  { id: 3, title: "Publish lesson", startsAt: new Date("2026-04-27T15:00:00Z"), status: "scheduled" },
];

for (const event of upcomingEvents(events, new Date("2026-04-27T10:00:00Z"))) {
  console.log(describeEvent(event));
}
اكتب هنا