Task - TypeScript - Interfaces, Arrow functions, Array methods (push, findIndex), and Class concepts - Event Management System #150
Replies: 6 comments
-
|
CODE interface Event {
id: number;
name: string;
date: string;
register(user: User): void;
attend(user: User): void;
provideFeedback(user: User, feedback: string): void;
}
interface User {
id: number;
name: string;
}
class EventImpl implements Event {
private attendees: User[] = [];
private feedback: Map<User, string> = new Map();
constructor(public id: number, public name: string, public date: string) {}
register(user: User): void {
this.attendees.push(user);
}
attend(user: User): void {
if (this.attendees.includes(user)) {
console.log(`${user.name} is already marked as attended for event ${this.name}.`);
} else {
this.attendees.push(user);
console.log(`${user.name} attended event ${this.name}.`);
}
}
provideFeedback(user: User, feedback: string): void {
if (!this.attendees.includes(user)) {
console.log(`${user.name} did not attend event ${this.name} and cannot provide feedback.`);
} else {
this.feedback.set(user, feedback);
console.log(`${user.name} provided feedback for event ${this.name}: ${feedback}`);
}
}
}
// Example usage
const event1: Event = new EventImpl(1, "Conference", "2023-05-01");
const user1: User = { id: 1, name: "Alice" };
const user2: User = { id: 2, name: "Bob" };
event1.register(user1);
event1.register(user2);
event1.attend(user1); // prints "Alice attended event Conference."
event1.attend(user2); // prints "Bob attended event Conference."
event1.attend(user1); // prints "Alice is already marked as attended for event Conference."
event1.provideFeedback(user1, "Great event!"); // prints "Alice provided feedback for event Conference: Great event!"
event1.provideFeedback(user2, "Could have been better."); // prints "Bob provided feedback for event Conference: Could have been better."
event1.provideFeedback({ id: 3, name: "Charlie" }, "Awesome!"); // prints "Charlie did not attend event Conference and cannot provide feedback." |
Beta Was this translation helpful? Give feedback.
-
|
CODE class User {
constructor(public id: number, public name: string) {}
}
interface Event {
id: number;
name: string;
date: string;
register(user: User): void;
attend(user: User): void;
provideFeedback(user: User, feedback: string): void;
getRegistrants(): User[];
getAttendees(): User[];
getFeedback(): { user: User; feedback: string }[];
}
class EventManager implements Event {
private attendees: User[] = [];
private feedback: { user: User; feedback: string }[] = [];
constructor(public id: number, public name: string, public date: string) {}
register = (user: User): void => {
this.attendees.push(user);
};
attend = (user: User): void => {
if (this.attendees.includes(user)) {
console.log(`${user.name} is already marked as attended for event ${this.name}.`);
} else {
this.attendees.push(user);
console.log(`${user.name} attended event ${this.name}.`);
}
};
provideFeedback = (user: User, feedback: string): void => {
if (!this.attendees.includes(user)) {
console.log(`${user.name} did not attend event ${this.name} and cannot provide feedback.`);
} else {
this.feedback.push({ user, feedback });
console.log(`${user.name} provided feedback for event ${this.name}: ${feedback}`);
}
};
getRegistrants = (): User[] => {
return [...this.attendees];
};
getAttendees = (): User[] => {
return [...this.attendees];
};
getFeedback = (): { user: User; feedback: string }[] => {
return [...this.feedback];
};
}
// Example usage
const event1: Event = new EventManager(1, "Conference", "2023-05-01");
const user1: User = new User(1, "Alice");
const user2: User = new User(2, "Bob");
const user3: User = new User(3, "Charlie");
event1.register(user1);
event1.register(user2);
event1.attend(user1);
event1.provideFeedback(user1, "Great event!");
event1.attend(user2);
event1.provideFeedback(user2, "Could have been better.");
console.log("Registrants:", event1.getRegistrants()); // prints "[User { id: 1, name: 'Alice' }, User { id: 2, name: 'Bob' }]"
console.log("Attendees:", event1.getAttendees()); // prints "[User { id: 1, name: 'Alice' }, User { id: 2, name: 'Bob' }]"
console.log("Feedback:", event1.getFeedback()); // prints "[{ user: User { id: 1, name: 'Alice' }, feedback: 'Great event!' }, { user: User { id: 2, name: 'Bob' }, feedback: 'Could have been better.' }]" |
Beta Was this translation helpful? Give feedback.
-
CODEinterface Event {
id: number;
name: string;
date: string;
register(user: User): void;
attend(user: User): void;
provideFeedback(user: User, feedback: string): void;
}
class User {
id: number;
name: string;
constructor(id: number, name: string) {
this.id = id;
this.name = name;
}
}
class EventManager implements Event {
id: number;
name: string;
date: string;
registrants: User[] = [];
attendees: User[] = [];
feedbacks: { user: User, feedback: string }[] = [];
constructor(id: number, name: string, date: string) {
this.id = id;
this.name = name;
this.date = date;
}
bubbles: boolean;
cancelBubble: boolean;
cancelable: boolean;
composed: boolean;
currentTarget: EventTarget | null;
defaultPrevented: boolean;
eventPhase: number;
isTrusted: boolean;
returnValue: boolean;
srcElement: EventTarget | null;
target: EventTarget | null;
timeStamp: number;
type: string;
composedPath(): EventTarget[] {
throw new Error("Method not implemented.");
}
initEvent(type: string, bubbles?: boolean | undefined, cancelable?: boolean | undefined): void {
throw new Error("Method not implemented.");
}
preventDefault(): void {
throw new Error("Method not implemented.");
}
stopImmediatePropagation(): void {
throw new Error("Method not implemented.");
}
stopPropagation(): void {
throw new Error("Method not implemented.");
}
NONE: 0;
CAPTURING_PHASE: 1;
AT_TARGET: 2;
BUBBLING_PHASE: 3;
register(user: User): void {
this.registrants.push(user);
}
attend(user: User): void {
const index = this.registrants.findIndex(u => u.id === user.id);
if (index !== -1) {
this.attendees.push(user);
this.registrants.splice(index, 1);
}
}
provideFeedback(user: User, feedback: string): void {
this.feedbacks.push({ user, feedback });
}
getRegistrants(): User[] {
return this.registrants;
}
getAttendees(): User[] {
return this.attendees;
}
getFeedback(): { user: User, feedback: string }[] {
return this.feedbacks;
}
}
const eventManager = new EventManager(1, 'My Event', '2023-05-01');
const user1 = new User(1, 'John');
const user2 = new User(2, 'Jane');
eventManager.register(user1);
eventManager.register(user2);
eventManager.attend(user1);
eventManager.provideFeedback(user1, 'Great event!');
eventManager.provideFeedback(user2, 'Could be better.');
console.log(eventManager.getRegistrants());
console.log(eventManager.getAttendees());
console.log(eventManager.getFeedback());SCREENSHORT |
Beta Was this translation helpful? Give feedback.
-
Codeinterface Event { class User { } class EventManager implements Event { } const eventManager = new EventManager(1, 'My Event', '2023-05-01'); const user1 = new User(1, 'Pujita'); eventManager.register(user1); eventManager.attend(user1); eventManager.provideFeedback(user1, 'Great event!'); console.log(eventManager.getRegistrants()); |
Beta Was this translation helpful? Give feedback.
-
|
interface Event { class User { } class EventManager implements Event { this.registrants.push(user); attend(user: User): void { provideFeedback(user: User, feedback: string): void { getRegistrants(): User[] { getAttendees(): User[] { getFeedback(): { user: User, feedback: string }[] { |
Beta Was this translation helpful? Give feedback.
-
|
interface MyEvent { class User { constructor(id: number, name: string) { class EventManager implements MyEvent { constructor(id: number, name: string, date: string) { register(user: User): void { attend(user: User): void { provideFeedback(user: User, feedback: string): void { getRegistrants(): User[] { getAttendees(): User[] { getFeedback(): { user: User, feedback: string }[] { |
Beta Was this translation helpful? Give feedback.

Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
You have been asked to develop an event management system that handles registration, attendance, and feedback for various events. The system should allow users to register for events, mark their attendance, and provide feedback for attended events.
Create an interface MyEvent with the following specifications:
Properties:
Methods:
Create a class User with the following properties:
Properties:
Implement the MyEvent interface in a class EventManager and add the following methods:
Methods:
Make use of arrow functions and array methods push and findIndex in the implementation.
Beta Was this translation helpful? Give feedback.
All reactions