import IMenuItemFactory, { MenuItem } from './MenuItemFactory.interface'; export default class Menu { constructor(private menuItems: IMenuItemFactory[] = []) {} public getMenuItems(...args: Params): MenuItem[] { return this.menuItems .map(menuItem => menuItem.generate(...args)) .filter(menuItem => menuItem !== false) as MenuItem[]; } public registerMenuItem(menuItem: IMenuItemFactory) { this.menuItems.push(menuItem); } public removeMenuItem(menuItem: IMenuItemFactory) { this.menuItems = this.menuItems.filter(item => item !== menuItem); } }