تمرين إعادة البناء
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));
}اكتب هنا